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;
}


posted @ 2015-02-28 13:56  SandKing  阅读(5)  评论(0)    收藏  举报  来源