第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()<<')';
}