C++ Primer(第五版) 第九章练习答案
9.1
9.2
#include <deque>
#include <list>
using namespace std;
int main()
{
list<deque<int>> list;
return 0;
}
9.3
9.4
#include <iostream>
#include <vector>
using namespace std;
bool find_int(const vector<int>::iterator &begin, const vector<int>::iterator &end, const int i)
{
auto beg = begin;
while (beg != end)
if (*beg++ == i)
return true;
return false;
}
9.5
#include <iostream>
#include <vector>
using namespace std;
vector<int>::iterator find_int(const vector<int>::iterator &begin, const vector<int>::iterator &end, const int i)
{
auto beg = begin;
while (beg != end)
{
if (*beg == i)
return beg;
++beg;
}
return end;
}
9.6
9.7
9.8
9.9
9.10
9.11
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> vec1;
vector<int> vec2{
1, 2, 3};
vector<int> vec3(vec2);
vector<int> vec4(vec3.begin(), vec3.end());
vector<int> vec5(10);
vector<int> vec6(10, 1);
return 0;
}
9.12
9.13
#include <iostream>
#include <list>
#include <vector>
using namespace std;
int main()
{
list<int> list{
1, 2, 3, 4, 5};
vector<int> ivec{
6, 7, 8, 9};
vector<double> dvec(list.begin(), list.end());
for(auto &i : dvec)
cout << i << ends;
cout << endl;
dvec.assign(ivec.begin(), ivec.end());
for(auto &i : dvec)
cout << i << ends;
cout << endl;
return 0;
}
9.14
#include <iostream>
#include <string>
#include <list>
#include <vector>
using namespace std;
int main()
{
list<const char*> list{
"x", "i", "a", "o"};
vector<string> vec(list.begin(), list.end());
for (auto &i : vec)
cout << i << ends;
cout << endl;
return 0;
}
9.15
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> v1{
1, 2, 3, 4};
vector<int> v2{
1, 2, 3, 4, 5};
vector<int> v3{
1, 2, 3, 4};
vector<int> v4{
1, 1, 6, 4, 1};
vector<int> v5{
1, 3};
cout << boolalpha
<< (v1 > v4) << ends
<< (v2 > v3) << ends
<< (v3 > v4) << ends
<< (v4 > vector<int>{
1, 0, 8, 45, 4}) << ends
<< (v5 > v1) << endl;
return 0;
}
9.16
#include <vector>
#include <list>
#include <string>
#include <iostream>
using namespace std;
bool compare(list<int> &list, vector<int> &vec);
int main()
{
list<int> list{
1, 2, 3, 4, 5};
vector<int> vec{
1, 2, 3, 4, 5};
cout << boolalpha
<< compare(list, vec) << endl;
return 0;
}
bool compare(list<int> &list, vector<int> &vec)
{
if (list.size() != vec.size())
return false;
auto lbeg = list.begin();
auto vbeg = vec.begin();
if (list.size() == vec.size())
while (lbeg != list.end())
if (*lbeg++ != *vbeg++)
return false;
return true;
}
9.17
9.18
#include <vector>
#include <string>
#include <list>
#include <forward_list>
#include <deque>
#include <array>
#include <iostream>
using namespace std;
int main()
{
string str;
deque<decltype(str)> deq;
while (cin >> str)
deq.emplace_back(str);
for (auto beg = deq.begin(); beg != deq.end(); beg++)
cout << *beg << endl;
return 0;
}
9.19
#include <vector>
#include <string>
#include <list>
#include <forward_list>
#include <deque>
#include <array>
#include <iostream>
using namespace std;
int main()
{
string str;
list<decltype(str)> deq;
while (ci