C++ Primer(第五版) 9.2.4--9.2.7节练习

9.11  (1) vector<int> a;      (2) vector<int> a(b);     (3) vector<int> a = {1, 2, 3, 4};     (4) vector<int> a(b.begin(), b.end());                           (5) vector<int> a(10);     (6)vector<int> a(10, 1);   

9.12 创建一个容器为另一个容器的拷贝:两个容器类型和元素类型必须匹配;接受两个迭代器创建拷贝:不要求容器和元素类型相同,只要能将要拷贝的元素转换为要初始化的容器的元素即可。

9.13 使用迭代器创建

#include <iostream>
#include <vector>
#include <list>

using namespace std;

int main()
{
	list<int> ilist = {1,2, 3, 4, 5};
	vector<int> ivec = {6, 7, 8, 9, 10};

	vector<double> dvec1(ilist.begin(), ilist.end());
	vector<double> dvec2(ivec.begin(), ivec.end());

	for (auto d : dvec1)
		cout << d << " ";
	cout << endl;
	
	for (auto d : dvec2)
		cout << d << " ";
	cout << endl;

	return 0;
}

9.14 

#include <iostream>
#include <list>
#include <vector>

using namespace std;

int main()
{
	list<const char *> slist = {"s1", "s2", "s3"};
	vector<string> svec;

	svec.assign(slist.cbegin(), slist.cend());
	
	for (auto s : svec)
		cout << s << " ";
	cout << endl;

	return 0;
}

9.15 

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	vector<int> v1, v2;

	cout << "input v1: " << endl;
	int i;
	while (cin >> i)
		v1.push_back(i);
	
	cin.clear();
	cout << "input v2: " << endl;
	while (cin >> i)
		v2.push_back(i);

	if (v1 == v2)
		cout << "equal" << endl;
	else 
		cout << "not equal" << endl;

	return 0;
}

9.16

/******************************************************
*比较list<int>和vector<int>:容器类型不同,不能直接比较,
*可以先创建一个与list<int>内容相同的vector<int>,再比较
*两个vector<int>
******************************************************/
#include <iostream>
#include <list>
#include <vector>

using namespace std;

int main()
{
	vector<int> ivec = {1, 2, 3, 4, 5};
	list<int> ilist = {1, 2, 7};

	vector<int> cp_list(ilist.cbegin(), ilist.cend());

	if ( ivec == cp_list )
		cout << "equal" << endl;
	else 
		cout << "not equal" << endl;

	return 0;
}

9.17 容器类型和元素类型必须相同;元素类型必须支持<操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值