C++Primer第五版 9.2.7节练习

来源:互联网 发布:软件总体设计要求 编辑:程序博客网 时间:2024/05/19 10:34

练习9.15:编写程序,判定两个vector<int>是否相等。
答:见练习9.15.cpp

练习9.16:重写上一题的程序,比较一个list<int>中的元素和一个vector<int>中的元素。
答: 见练习9.16.cpp

练习9.17:假定c1和c2是两个容器,下面的比较操作有何限制(如果有的话)?
if (c1 < c2)
答:c1和c2的容器中的元素类型必须要支持<的比较操作,否则,这个语句错误。

练习9.15

/**练习9.15 *日期:2015/7/28*问题描述:练习9.15:编写程序,判定两个vector<int>是否相等。*功能;比较 *作者:Nick Feng *邮箱:nickgreen23@163.com */#include <iostream>#include <vector>using namespace std;void compare_vector(vector<int> vec1, vector<int> vec2){   if(vec1.size() == vec2.size())   {     int flag = 0;     for(auto i = 0; i != vec1.size(); ++i)     {        if(vec1[i] == vec2[i])            flag = 1;        else            flag = 0;        }     if(flag == 1)        cout << "Equal!!!" << endl;     else        cout << "Not Equal..." << endl;   }   else        cout << "Not Equal..." << endl; } int main(){    vector<int> vec1 = {1,2,3,4,5,6,7,8};    vector<int> vec2 = {1,2,3,4};    vector<int> vec3 = {1,2,3,4};    cout << "compare vec1 and vec2: ";     compare_vector(vec1, vec2);    cout << "compare vec2 and vec3: ";    compare_vector(vec2, vec3);    return 0;}

练习9.16

/**练习9.16 *日期:2015/7/28 *问题描述:*功能;*作者:Nick Feng *邮箱:nickgreen23@163.com */#include <iostream>#include <vector>#include <list>using namespace std;bool compare_vector(vector<int> vec1, vector<int> vec2, int a, int b)//输入两个参数,a,b表示访问的下标,利用了vector<int> 随机访问的特性 {   if(a <= vec1.size() && b <= vec2.size())   {      if(vec1[a] == vec2[b])         return true;      else          return false;   }       else         return false;} bool compare_list_vector(list<int> li, vector<int> vec, int a, int b){    vector<int> temp(li.begin(), li.end());     //利用拷贝初始化,先将li的内容拷贝一个vector<int> temp,然后就和上面一样了。     if(a <= temp.size() && b <= vec.size())    {        if(temp[a] == vec[b])            return true;        else             return false;    }    else        return false; } int main(){    vector<int> vec1 = {1,2,3,4,5,6};    vector<int> vec2 = {1,2,3,4,5};    list<int> li = {1,2,3,4,5,6};    if(compare_list_vector(li,vec1,2,2))        cout << "Equal!!!" << endl;    else        cout << "Not Equal..." << endl;    return 0;}
0 0