第16章 庫組織和容器
vector 容器
insert返回的是新插入元素的迭代器
erase返回的刪除元素之後下一個元素的迭代器
反向迭代器 rbegin(),是指向最後一個元素的迭代器;rend()是指向begin()前一個的迭代器。
遍歷過程中應該對 rbegin() 執行++,而不是--,執行逆序從後向前的遍歷。
反向迭代器reverse_iterator 和 iterator可能類型並不一致。反向迭代器可以用base()函數轉換爲迭代器類型。
一個迭代器,在執行完插入,刪除操作後可能會失效,而不能再使用。因爲插入刪除操作可能會使得vertor指向另外一塊內存。所以需要通過插入、刪除操作的返回值來獲取新的迭代器。
第17章 標準容器
map和hash_map之間最本質的差異就在於:map對其元素類型要求有一個<,而hash_map要求一個== 和 一個散列函數。具體的說,map是用紅黑樹實現的,hash_map是用堆加hash函數實現的。
map是有序的,hash_map是無序的。
如果允許重複鍵值,請使用multimap或multiset。
第21章 流
用戶定義類型的輸出
class complex{
public:
double real() const{return re; }
double imag() const{return im; }
}
ostream& operator<<(ostream &s, const complex &z)
{
return s<<'('<<z.real()<<','<<z.imag()<<')';
}