C++PrimerPlus(第6版)中文版Chapter16.8vect2.cpp:学习size,begin,end,push_back,erase,insert的使用

本文通过一个C++程序实例展示了如何使用vector容器的size、begin、end、push_back、erase和insert方法。程序创建了一个Review结构体类型的vector,填充数据,然后进行元素的添加、删除和插入操作,展示了这些基本操作的用法。

学习vector 的size(),begin(),end(),push_back(),erase(),insert()的使用

// Example16_8vect2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <vector>

struct Review {
	std::string title;
	int rating;
};
bool FillReview(Review & rr);
void ShowReview(const Review & rr);

int main()
{
	// std::cout << "Hello World!\n";
	using std::cout;
	using std::vector;
	vector<Review> books;//books 是一个vector,里面的元素类型是Review类型,Review是个结构体
	Review temp;
	while (FillReview(temp))
		books.push_back(temp);//将元素添加到vector的末尾
	int num = books.size();
	if (num > 0)
	{
		cout << "Thank you.You entered the following:\n" << "Rating\tBook\n";
		for (int i = 0; i < num; i++)
			ShowReview(books[i]);
		cout << "Reprising:\n" << "Rating\tBook\n";
		vector<Review>::iterator pr;
		for (pr = books.begin(); pr != books.end(); pr++)
			ShowReview(*pr);
		vector<Review> oldlist(books);//使用了拷贝构造函数
		if (num > 3)
		{
			//remove 2 items
			books.erase(books.begin() + 1, books.begin() + 3);
			cout << "After Erase:\n";
			for (pr = books.begin(); pr != books.end(); pr++)
				ShowReview(*pr);
			//insert 1 item:插入一个元素
			books.insert(books.begin(), oldlist.begin() + 1, oldlist.begin() + 2);//在books的开头处添加oldlist 的第2个元素
			cout << "After Insertion:\n";
			for (pr = books.begin(); pr != books.end(); pr++)
				ShowReview(*pr);
		}

	}
	else
		cout << "Nothing Entered,nothing gained.\n";
	return 0;
}

	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)
			return false;
		//get rid of rest of input line 
		while (std::cin.get() != '\n')
			continue;
		return true;

	}
	void ShowReview(const Review & rr)
	{
		std::cout << rr.rating << "\t" << rr.title << std::endl;

	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值