(0)启示:程序=算法+数据结构
参考资料:C++迭代器(STL迭代器)iterator详解 (biancheng.net)
< ITERATOR >
1.(算法-迭代器-容器)
迭代器是一种 检查容器内元素 并 遍历元素 的数据类型。
C++更趋向于使用迭 代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种 迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素。
2.迭代器按照定义方式分成以下四种。
1)正向迭代器
容器类名::iterator 迭代器名;
2) 常量正向迭代器
容器类名::const_iterator 迭代器名;
3) 反向迭代器
容器类名::reverse_iterator 迭代器名;
4) 常量反向迭代器
容器类名::const_reverse_iterator 迭代器名;
3.*迭代器名
就表示迭代器指向的元素。通过非常量迭代器还能修改其指向的元素。
迭代器都可以进行++
操作。反向迭代器和正向迭代器++后移动方向不同。
#include <iostream> #include <vector> using namespace std; int main() { vector<int> v; //v是存放int类型变量的可变长数组,开始时没有元素 for (int n = 0; n<5; ++n) v.push_back(n); //push_back成员函数在vector容器尾部添加一个元素 vector<int>::iterator i; //定义正向迭代器 for (i = v.begin(); i != v.end(); ++i) { //用迭代器遍历容器 cout << *i << " "; //*i 就是迭代器i指向的元素 *i *= 2; //每个元素变为原来的2倍 } cout << endl; //用反向迭代器遍历容器 for (vector<int>::reverse_iterator j = v.rbegin(); j != v.rend(); ++j) cout << *j << " "; return 0; }View Code
4.后置++
要多生成一个局部对象 tmp,因此执行速度比前置的慢。
同理,迭代器是一个对象,STL 在重载迭代器的++
运算符时,后置形式也比前置形式慢。
< CONTAINER >顺序容器
0.vector deque双端队列 list双向链表
1.常用算法函数
a.front(); a.back();
a.size(); a.clear();
a.push_front(x); a.pop_front();
a.push_back(x); a.pop_back();
a.insert(it, x);
a.erase(it); a.erase(first, last)
暂未完结,14号接着写