习题9-11
1) vector<int> v1; /空,潜在元素为int型,执行默认初始化;
2) vector<int> v2{1,2,3}; /1,2,3;
3) vector<int> v3(v2); /1,2,3;
4) vector<int> v4=v2; /1,2,3;
5) vector<int> v5={1,2,3}; /1,2,3;
6) vector<int> v6(3,1); /1,1,1;
7) vector<int> v7(3); /0,0,0;
8) vector<int> v8(v2.begin(),v2.end()); /1,2,3;
习题9-12
不同:接受容器创建其拷贝的构造函数,要求元素类型必须匹配;接受两个迭代器创建拷贝的不要求容器类型相同,只要能够转换成初始化容器的元素类型即可;
习题9-13
知识点:
容器之间的拷贝,容器的类型和其中元素的类型都必须相同
利用迭代器进行拷贝,只需要其元素的范围,利用的是迭代器范围的对应元素进行初始化
list<int> ilist = {1, 2, 3, 4, 5};
vector<double> dvec1(ilist.cbegin(), ilist.cend());
vector<int> ivec = {5, 6, 7, 8};
vector<double> dvec2(ivec.cbegin(), ivec.cend());
习题9-14
list<char*> names;
vector<string> new;
new.assign(names.cbegin(),names.cend());
习题9-15
bool func(vector<int> v1,vector<int> v2)
{
return v1==v2;
}
习题9-16
list<int> li={1,2}
vector<int> vec={1,3};
vector<int> vec2=(list.cbegin(),list.cend())
vec>vec2?cout<<"vector<int> vec>list<int> li"<<endl:cout<<"vector<int> vec>list<int> li"<<endl;
习题9-17
(1)c1与c2必须是相同的容器,并且容器元素类型必须相同;
(2)元素类型定义了“<”运算符;
习题9-18
#include<iostream>
#include<string>
#include<deque>
using namespace std;
void main()
{
deque<string> deq;
string word;
while (cin >> word)
deq.push_back(word);
for (auto it = deq.begin(); it != deq.end(); ++it)
cout << *it << endl;
}
习题9-19
#include<iostream>
#include<string>
#include<list>
using namespace std;
void main()
{
list<string> li;
string word;
while (cin >> word)
li.push_back(word);
for (auto it = li.begin(); it != li.end(); ++it)
cout << *it << endl;
}
习题9-20
#include<iostream>
#include<string>
#include<list>
#include<deque>
using namespace std;
void main()
{
list<int> li = { 1,2,3,5,7,8,10 };
deque<int> deq1, deq2;
for (auto it = li.begin(); it != li.end(); ++it)
{
if (*it % 2 == 0)
deq1.push_back(*it);
else
deq2.push_back(*it);
}
for (auto it = li.begin(); it != li.end(); ++it)
cout << *it << " ";
cout << endl;
for (auto it = deq1.begin(); it != deq1.end(); ++it)
cout << *it << " ";
cout << endl;
for (auto it = deq2.begin(); it != deq2.end(); ++it)
cout << *it << " ";
cout << endl;
}