四、实例代码学习:
# include <iostream> # include <vector> # include <algorithm> using namespace std; typedef vector<int> INTVEC; /* vector's display function void ShowVec(const INTVEC& v) { unsigned int i = 0; for(i = 0; i < v.size(); ++i) { cout << v[i] << " "; } cout << endl; } */ //利用迭代器进行显示 void ShowVec(const INTVEC& v) { //*it不能赋值,不能改写内容 INTVEC::const_iterator it; //任何迭代器一般重载了不等号运算符 //for(it = v.begin(); it < v.end(); ++it ) for(it = v.begin(); it != v.end(); ++it ) { cout << *it << " "; } cout << endl << endl; } int main(void) { INTVEC v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(5); cout << "Show current element : " ; ShowVec(v); cout << endl; cout << "print the last element: "<< v.back() << endl; cout << endl; cout << "pop the last element!!!"; v.pop_back(); cout << endl << endl; cout << "Show current element : " ; ShowVec(v); cout << "erase element !!! "; v.erase(v.begin() + 2); //移除一个元素 cout << endl; cout << "Show current element : " ; ShowVec(v); return 0; } ----------------------------------------------------------- |
运行结果:
wKioL1OeP1qyehJOAADfUNpfvZI922.jpg
-----------------------------------------------------------
最后补充一点关于迭代器的知识:
1、容器一般都支持迭代器操作
2、通过迭代器来遍历容器
3、string也可以理解为容器,只是通常当成字符串类
4、迭代器可以理解为容器的指针
5、迭代器可以理解泛型程序指针
6、vector<int> 等价为 int*
7、有些不是这样等价的
8、任何迭代器一般重载了不等号运算符
9、++运算符的重载
后置++多了一次临时对象的构造,效率低
前置++无临时对象的构造