stl操作2
1.在顺序容器中添加元素
2.容器元素都是副本
3.添加元素可能会是迭代器失效
4.避免存储end操作返回的迭代器
#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <string>
using namespace std;
int main( int argc, char** argv )
{
vector<string> svec;
list<string> slst;
deque<string> sdeq;
svec.push_back("Bill");
svec.push_back("Tom");
svec.push_back("Mary");
slst.push_back("Bill");
slst.push_back("Tom");
slst.push_back("Mary");
sdeq.push_back("Bill");
sdeq.push_back("Tom");
sdeq.push_back("Mary");
slst.push_front("C++");
slst.push_front("Primer");
sdeq.push_front("Primer");
sdeq.push_front("C++");
for(list<string>::iterator itr = slst.begin(); itr != slst.end(); ++itr )
{
cout<<*itr<<" ";
}
cout<<endl;
list<string>::iterator it = slst.begin();
cout<<*it<<endl;
++it;
cout<<*it<<endl;
slst.insert(it, "hello");
for(list<string>::iterator itr = slst.begin(); itr != slst.end(); ++itr )
{
cout<<*itr<<" ";
}
cout<<endl;
it = slst.begin();
++it;
++it;
++it;
cout<<*it<<endl;
slst.insert(it, 10, "hi" );
for(list<string>::iterator itr = slst.begin(); itr != slst.end(); ++itr )
{
cout<<*itr<<" ";
}
cout<<endl;
string sarray[4] = {"qusai", "simba", "frollo", "scar" };
it = slst.begin();
++it;
cout<<*it<<endl;
slst.insert(it, &sarray[1], &sarray[4]);
for(list<string>::iterator itr = slst.begin(); itr != slst.end(); ++itr )
{
cout<<*itr<<" ";
}
cout<<endl;
//迭代器失效
list<int> ilst;
ilst.push_back(10);
ilst.push_back(20);
ilst.push_back(30);
list<int>::iterator first = ilst.begin();
//vector<int>::iterator last = ilst.end();
//while(first != last)
while(first != ilst.end() )
{
ilst.insert(first,42);
++first;
}
for(list<int>::iterator i = ilst.begin(); i != ilst.end(); ++i )
{
cout<<*i<<" ";
}
cout<<endl;
return 0;
}