一、STL简介 §
1.9 常见迷惑写法 §
1.9.4 increment / decrement / dereference §
1.9.5 前闭后开 §
[first,last)
1.9.6 function call §
伪函数
二、空间适配器(allocator) §
四、序列式容器(sequence containers) §
4.2 vector §
4.2.2 vector定义摘要 §
4.2.3 迭代器 §
Random Access Iterators
4.2.4 数据结构 §
4.2.5 构造与内存管理 §
动态增加大小: 以原大小的两倍另外配置一块较大的空间, 然后将原内容拷贝过来, 释放原空间, 导致原来指向vector的迭代器失效
4.2.6元素操作 §
4.3 list §
4.3.3 迭代器 §
Bidirectional Iterators
插入(insert)和接合(splice)不会造成迭代器失效, erase只有**“指向被删除”**的迭代器失效
4.3.4 list 的数据结构 §
环状双向链表
注意
- 指针node指向尾部的空白节点,node就可以符合STL的前闭后开
- size()方法复杂度是O(n)的
4.3.6 list 的元素操作 §
- push_front:() insert(begin(), x);
- push_back(): insert(end(), x);
- erase(): return下一个节点的迭代器
- pop_front(): erase(begin());
- pop_back():
iterator tmp=end(); // 最后一个是空节点
erase(—tmp);
- clear():
while(cur != node) {…}
node->nxt = node, node->pre = node;
- remove(const T& value); 将数值为value的所有元素移除
- unique(): 移除连续而相同的元素
- transfer()
- splice():
- x结合于position所指位置之前, x必须不同于*this
- i 所指元素接合于 position前
- 将 [first, last) 所有元素结合与 position 前
- list 不能使用STL的sort, 但是自带sort 成员函数
因为STL的sort只接受RandomAccessIterator
4.5 stack & 4.6 queue §
deque 为底层的配接器(adapter), 没有迭代器