您的位置:首页 > 其它

Vector模板常见操作

2012-03-18 09:03 337 查看
#include <iostream>#include <string>#include <vector>struct Review{	std::string title;	int rating;};bool FillReview(Review &rr){	std::cout<<"Enter book title (quit to quit): ";	std::getline(std::cin,rr.title);	if(rr.title == "quit")		return false;	std::cout<<"Enter book rating: ";	std::cin>>rr.rating;	if(!std::cin) //rating输入的是非数字时返回false		return false;	std::cin.get(); //接收换行符	return true;}void ShowReview(const Review &rr){	std::cout<<rr.rating<<"\t"<<rr.title<<std::endl;}int main(){	using std::cout;	using std::vector;	vector<Review> books;//vector模板使用动态内存分配	Review temp;	while(FillReview(temp))		books.push_back(temp);//将元素添加到矢量尾	int num = books.size();//返回books的大小	if(num>0)	{		cout<<"Thank you. You entered the following:\n"			<<"Rating\tBooks\n";		vector<Review>::iterator pr;//为vector的Review类型规范声明一个迭代器(指针),作用域为整个类		for(pr=books.begin();pr != books.end();pr++)/*begin()返回books[o]的地址,end()返回最后一个元素后面的那个 元素的地址*/			ShowReview(*pr);		vector<Review> oldlist(books);		if(num>3)		{			//Remove two items			books.erase(books.begin()+1,books.begin()+3);/*erase()删除矢量中给定区间的元素,这里删除的是元素books[1]和books[2] ,注意范围*/			cout<<"After erasure:\n";			for(pr=books.begin();pr != books.end();pr++)				ShowReview(*pr);			//insert 1 item			books.insert(books.begin(),oldlist.begin()+1,oldlist.begin()+2);//insert()功能和erase()相反			cout<<"After insertion:\n";			for(pr=books.begin();pr != books.end();pr++)				ShowReview(*pr);		}		books.swap(oldlist);//交换两个容器类		cout<<"Swapping oldlist with books:\n";		for(pr=books.begin();pr != books.end();pr++)			ShowReview(*pr);	}	else		cout<<"Nothing entered,nothing gained.\n";	return 0;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: