c++primer5 题3.36

来源:互联网 发布:营销网络地图代码 编辑:程序博客网 时间:2024/05/18 01:20

数组的话长度基本都限制的死死的
毫无意思。。。
*而vector就灵活的多,可让它长可让它短
先定义空vector,再输入多少个数来确定它的长度就比较灵活了。。。。
这题我耗费了许多时间来去想,终于成功实现自己的想法
讲解一下。。。

**本程序还有一点小要求,就是b一定要输入一次以上。。。使得q不为空vector;

1.可以让输入的两个不同的vector长度不一致
当然只能是前面长后面短,要前短后长的话自己再改改吧。。
2.两个vector长度理论可以无限长。。
3.把 cout<<整合到循环条件那里使得输入的时候更美观。
4.auto 语句一定得在输入后。。空vector可是没有迭代器的
5.核心的判断语句
只要两个vector长度不一致或者相同位置的元素不一致就
输出 不相等的结论。。。
使用了 system(cls)和 exit(0)。。。

判断vector是否相等的程序如下。。。

#include<iostream>#include<vector>#include<cstdlib>using namespace std;int main(){    int a=0,b=0;    vector<int> p,q;    while(cout<<" 输入a: "&&cin>>a)      {         p.push_back(a);        if(cout<<" 输入b: "&&cin>>b)             q.push_back(b);    }    auto p1=p.begin(),p2=p.end(),q1=q.begin(),q2=q.end();      for(;p1!=p2;++p1,++q1)    {        if(p.size()!=q.size()||*p1!=*q1)         {   system("cls");            cout<<" they are not equal .";            exit(0);        }    }    system("cls");    cout<<" they are equal.";    return 0;   }

关于low b数组的实现。。。

#include<iostream>#include<vector>#include<string>#include<cstdlib>using namespace std;int main(){    int a[100],b[100],    *p1=begin(a),*p2=end(a),    *q1=begin(b),*q2=end(b);    for(int i=0;i<100;++i)    {             cin>>a[i]>>b[i];    }    for(;p1!=p2;++p1,++q1)    {          if(*p1!=*q1)          {            cout<<" they are not equal. ";            exit(0);          }    }    cout<<" they are equal. ";    return 0;}