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 容器类型和元素类型必须相同;元素类型必须支持<操作。