参考:
http://blog.csdn.net/qq_23100787/article/details/51388163
STL中的迭代器有五种类型,不同的容器可支持不同的迭代器
1.vector,支持随机迭代器
#include<iostream>
#include<vector>
#include<stdlib.h>
using namespace std;
int main()
{
vector<char> charvector;
for (int x = 0; x < 10; ++x)
charvector.push_back(65 + x);
for (int x = 0; x < charvector.size(); ++x)
{
vector<char>::iterator start = charvector.begin();
charvector.erase(start);
vector<char>::iterator iter;
for (iter = charvector.begin(); iter != charvector.end(); iter++)
{
cout << *iter;
}
cout << endl;
}
cout << endl;
vector<char>::iterator iter1=charvector.begin();;
//iter1 += 2;//vector支持随机迭代器,可递增n位或递减n位
//cout << *iter1;
cout << iter1[2];//同上两行代码得到的结果一样
cout << endl;
system("pause");
return 0;
}
2.deque,支持随机迭代器
#include<iostream>
#include<deque>
#include<stdlib.h>
using namespace std;
//deque也支持随机迭代器
int main()
{
deque<char> chardeque;
for (int x = 0; x < 10; x++)
chardeque.push_front(65 + x);
for (int x = 0; x < chardeque.size(); x++)
{
deque<char>::iterator start = chardeque.begin();
chardeque.erase(start);
deque<char>::iterator iter;
for (iter = chardeque.begin(); iter != chardeque.end(); iter++)
{
cout << *iter;
}
cout << endl;
}
system("pause");
return 0;
}
3.list,支持双向迭代器
#include<iostream>
#include<list>
#include<stdlib.h>
using namespace std;
//list并不支持随机迭代器,支持双向迭代器,不可递增或递减n位
int main()
{
list<char> charlist;
for (int x = 0; x < 10; x++)
charlist.push_front(65 + x);
list<char>::iterator iter;
for (iter = charlist.begin(); iter != charlist.end(); iter++)
{
cout << *iter;
}
cout << endl;
list<char>::iterator start = charlist.begin();
charlist.insert(++start, 5, 'X');
for (iter = charlist.begin(); iter != charlist.end(); iter++)
{
cout << *iter;
}
cout << endl;
list<char>::iterator iter1=--charlist.end();//list容器提供双向迭代器,可前置自减或后置自减
cout << *iter1;
cout << endl;
system("pause");
return 0;
}
4.自适应容器stack和queue不支持迭代器。
#include<iostream>
#include<list>
#include<stack>
#include<stdlib.h>
using namespace std;
int main()
{
stack<int, list<int>> intstack;
for (int x = 1; x < 11; x++)
{
intstack.push(x * 100);
cout << x * 100 <<' ';
}
cout << endl;
int size = intstack.size();
for (int x = 0; x < size; x++)
{
cout << intstack.top() << ' ';
intstack.pop();
}
system("pause");
return 0;
}
#include<iostream>
#include<list>
#include<queue>
#include<stdlib.h>
using namespace std;
int main()
{
queue<int, list<int>> intqueue;
for (int x = 1; x < 11; x++)
{
intqueue.push(x * 100);
cout << x * 100 << ' ';
}
cout << endl;
int size = intqueue.size();
for (int x = 0; x < size; x++)
{
cout << intqueue.front() << ' ';
intqueue.pop();
}
system("pause");
return 0;
}