您的位置:首页 > 其它

判断一个对象是否是另一个的前缀

2014-10-09 16:54 141 查看
题目:给出两个int型的vector对象,编写程序判断一个对象是否是另一个对象的前缀。如果两个vector对象的长度不相同,假设较短的vector对象长度为n,则只对这两个对象的前面n个元素做比较。例如,对于(0,1,1,2)和(0,1,1,2,3,5,8)这两个vector,你的程序应该返回true。

#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> vec1,vec2;
int temp;

//读入第一个vector对象的元素
cout<<"please enter the first vector:"<<endl;
while (cin>>temp)//******(1)
{
vec1.push_back(temp);//******(2)
cin>>temp;
}

//读入第二个vector对象的元素
cout<<"please enter the second vector:"<<endl;
cin.clear();//******(3)
while (cin>>temp)
{
vec2.push_back(temp);
cin>>temp;
}

//比较两个vector对象
vector<int>::size_type size1,size2;//******(4)
size1=vec1.size();
size2=vec2.size();
bool result=true;
for (vector<int>::size_type i =0;i!=(size1>size2 ? size2:size1);++i)
{
if (vec1[i]!=vec2[i])
{
result=false;
break;
}
}

//输出结果
if (result)
{
if (size1<size2)
cout<<"vec1 is prefix of vec2"<<endl;
else if(size1==size2)//******(5)
cout<<"the two vector are equal"<<endl;
else
cout<<"vec2 is prefix of vec1"<<endl;
}
else
cout<<"no prefix"<<endl;

return 0;
}


在调试过程中遇到一些问题,现总结如下:

(1)while 循环中使用文件结束符 ctrl+z 来控制文件输入的结束,顺序为ctrl+z加一个回车再ctrl+z加一个回车。如图所示:



(2)vector 对象的操作之 push_back(),也就是“插入”(push)到 vector 对象的”后面“(back)。

(3)while循环中用文件结束符来控制输入的结束时,要注意在下一个循环输入之前,要将流 cin 恢复为有效状态(使用 cin.clear())。

(4)size_type 类型为成员函数 size 返回的类型,使用 size_type 类型时,必须指出该类型是在哪里定义的(vector<int>::size_type //ok ; vector::size_type //error)。

(5)注意不要把 size1==size2 误写成 size1=size2。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐