容器,我的理解就是一个无限大的盆子,里面可以放很多同类型的东西,你可以往里面放东西,也可以往里面取东西,当然你也可以只是看看里面的东西而已。但是,不同类型的容器,对于东西的存取规则是不一样的,当然,这是以后要说的事情了...
迭代器,是用来访问、遍历容器的,是为容器而生,每个容器都有一个迭代器。对于迭代器而言,通过不同的方法即可实现对容器的各种操作。
简单的例子:
#include <list> #include <vector> #include <deque> #include <iostream> using namespace std; using std::vector; int main() { vector<int> v1;//申明一个容器 vector<int>::iterator iv1, iv2;//声明两个对应的迭代器 int a; for( int i=0; i<10; i++ ) v1.push_back( i );//往容器里面添加元素 iv1 = v1.begin();//获取第一个元素 iv2 = v1.end();//获取最后一个元素的下一个元素,代表非法元素,用作哨兵 //a = v1.begin(); //while( !v1.empty() ) while( iv1!=iv2 ) { //cout << v1[v1.size()-1] << "\n";//通过 下标访问 //v1.pop_back(); cout << *iv1 << "\n";//通过*来访问迭代器所指向的容器元素 iv1++;//迭代器自增遍历容器 } {//因为重命名的冲突,偷懒加了个花括号 vector<char> v2( 15 ); vector<char>::iterator iv2; for( vector<char>::iterator iv2=v2.begin(); iv2!=v2.end(); iv2++ ) { *iv2 = 'G'; } iv2 = v2.begin(); while( iv2!=v2.end() ) { cout << *iv2++ ; } //迭代器不仅有自增,而且可以通过+n或者-n来访问容器元素,只要合法就行 for( vector<char>::iterator iv2=v2.begin(); iv2!=v2.end(); iv2+=3 ) { *iv2 = 'b'; } iv2 = v2.begin(); cout << "\n迭代器增加n:"; while( iv2!=v2.end() ) { cout << *iv2++ ; } } return 0; }