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

题目:给出两个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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值