C++primer 9.2.7节练习

练习9.15

 1 #include <iostream>
 2 #include <vector>
 3 #include <list>
 4 #include <iterator>
 5
 6 using namespace std;
 7
 8 int main()
 9 {
10     vector<int> v1{ 1, 3, 5, 7, 9 };
11     vector<int> v2{ 1,3,9 };
12     vector<int> v3{ 1,3,5,7 };
13     vector<int> v4{ 1,3,5,7,9 };
14     if (v1 < v2)
15         cout << true << endl;
16     else
17         cout << false << endl;
18     system("pause");
19     return 0;
20 }

练习9.16

 1 #include <iostream>
 2 #include <vector>
 3 #include <list>
 4 #include <iterator>
 5
 6 using namespace std;
 7
 8 int main()
 9 {
10     vector<int> v1{ 1, 3, 5, 7, 9 };
11     list<int> v2{ 1,3,9 };
12     auto beg = v1.begin();
13     auto last = v1.end();
14     auto beg1 = v2.begin();
15     auto last1 = v2.end();
16     for (; beg != last && beg1 != last1; ++beg, ++beg1)
17     {
18         if (*beg > *beg1)
19             cout << "true" << endl;
20         else if (*beg == *beg1)
21             cout << "equal" << endl;
22         else
23             cout << "false" << endl;
24     }
25     system("pause");
26     return 0;
27 }

网上答案利用拷贝初始化在进行同类型容器同类型元素的比较,个人觉得比我的好。

 1 #include <iostream>
 2 #include <vector>
 3 #include <list>
 4 using namespace std;
 5
 6 bool compare_vector(vector<int> vec1, vector<int> vec2, int a, int b)//输入两个参数,a,b表示访问的下标,利用了vector<int> 随机访问的特性
 7 {
 8    if(a <= vec1.size() && b <= vec2.size())
 9    {
10       if(vec1[a] == vec2[b])
11          return true;
12       else
13          return false;
14    }
15    else
16         return false;
17 }
18
19 bool compare_list_vector(list<int> li, vector<int> vec, int a, int b)
20 {
21     vector<int> temp(li.begin(), li.end());
22     //利用拷贝初始化,先将li的内容拷贝一个vector<int> temp,然后就和上面一样了。
23     if(a <= temp.size() && b <= vec.size())
24     {
25         if(temp[a] == vec[b])
26             return true;
27         else
28             return false;
29     }
30     else
31         return false;
32  }
33
34 int main()
35 {
36     vector<int> vec1 = {1,2,3,4,5,6};
37     vector<int> vec2 = {1,2,3,4,5};
38     list<int> li = {1,2,3,4,5,6};
39     if(compare_list_vector(li,vec1,2,2))
40         cout << "Equal!!!" << endl;
41     else
42         cout << "Not Equal..." << endl;
43     return 0;
44 }

练习9.17

c1和c2的容器类型必须相同,且容器中的元素类型也必须相同,还有容器中的元素类型必须要定义了相应的比较运算符

时间: 2024-10-14 04:53:50

C++primer 9.2.7节练习的相关文章

C++primer 15.7.3节练习

练习15.26 写的时候不小心写到了派生类Disc_quote,其实是一样的,主要明白原理即可 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector> 6 7 using namespace std; 8 9 class Quote { 10 public: 11 Quote() : bookNo(

C++primer 15.2.2节练习

练习15.4 a)错误,一个类不能派生它本身 b)正确,Derived从他的基类Base派生,且规定派生类从基类继承的数据成员对于派生类的用户是不可见. c)错误,派生类的声明与其他类相差不大,声明中包含类名但是不包含他的派生列表: 练习15.5 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector>

C++primer 14.2.1节练习

练习14.6 1 #include <iostream> 2 #include <string> 3 #include <memory> 4 #include <vector> 5 #include <algorithm> 6 #include <numeric> 7 8 using namespace std; 9 10 class Sales_data { 11 friend istream& operator >&

C++primer 15.7.4节练习

练习15.27 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector> 6 7 using namespace std; 8 9 class Quote { 10 public: 11 Quote() : bookNo(""), price(0.0) { cout <<

C++ Primer 6.5.3节练习

练习 6.47: 改写6.3.2节(第205页)练习中使用递归输出vector内容的程序,使其有条件地输出与执行过程有关的信息.例如,每次调用时输出vector对象的大小.分别在打开和关闭调试器的情况下编译并执行这个程序. ///这一题需要在前面输出vector内容的程序中,添加新的功能---->有条件地输出与执行过程有关的信息. 为了简便解答该题,我们采用vector引用,vector的类型是string型,在过程中不改变容器大小. 经过测试得到一个现象,编译器将会按照 #define DEB

C++primer 11.3.5节练习

练习11.27 对于multimap来说统计关键字出现的次数用count会很好,而对于map来说寻找关键字来说更加妥当: 练习11.28 1 #include <iostream> 2 #include <string> 3 #include <set> 4 #include <map> 5 #include <algorithm> 6 #include <vector> 7 #include <algorithm> 8

C++primer 11.2.3节练习

练习11.12 1 #include<iostream> 2 #include<string> 3 #include <iostream> 4 #include <vector> 5 #include <algorithm> 6 #include <list> 7 #include <functional> 8 #include <iterator> 9 #include <map> 10 #inc

C++primer 7.5.3节练习

练习7.43 网上的答案 1 #include <iostream> 2 using std::cout; 3 using std::endl; 4 5 class Nodefault 6 { 7 public: 8 Nodefault(int i) 9 { 10 val = i; 11 } 12 int val; 13 }; 14 15 class C 16 { 17 public: 18 Nodefault nd; 19 C(int i = 0) : nd(i) { } 20 }; 21

C++primer 7.1.3节练习

练习7.6 1 #include <iostream> 2 #include <string> 3 #include "factmain.h" 4 using namespace std; 5 6 struct Sales_data { 7 string isbn() const { return bookNo; } 8 Sales_data &combine(const Sales_data&); 9 string bookNo; 10 uns

c++ primer 6.5.1节练习答案

练习6.40 a)正确 b)错误,一旦某个形参被赋予了默认值,他后面的所有形参都必须有默认值. 练习6.41 a)错误,ht没有默认实参,而a的实参列表里也没有给出实参: b)合法,调用init(24 ,10 ,' '): c)虽然合法,但是与程序猿的设计初衷不符,*会转换成十进制的数43,相当于调用init(14, 43, ' '): 练习6.42 1 string make_plural(size_t ctr, const string &word, const string &end