181页习题6.16,比较两个vector对象,看是否有前缀关系

//为了方便,要包含的文件会不同,但我没有删
#include <iostream>
#include <string>
#include <vector>
#include <bitset>
#include <cstring>   //和C语言的string.h其实是一个版本

using std::bitset;
using std::vector;
using std::cin;
using std::endl;
using std::cout;
using std::string;

//---------------------------------------------------------------------------

    int main()
    {
  vector<int> ivec1,ivec2;
  
  //给两个vector赋值
  cout<<"请输入第一个vector内的int:"<<endl;
  int i=0;
  while(cin>>i)
   ivec1.push_back (i);

  cout<<"请输入第二个vector内的int:"<<endl;
  
  cin.clear ();        //如没有cin.clear()语句,程序不会执行下面的while语句,说明此时cin>>i没有返回真值
  cin.sync();         //用此句清空内存,否则如前面有输入非int,则会使cin处于错误装态
                     //如用0 1 1 2并把结束符输在同一行,则会使第二个cin输入语句失效,但如果换行后再输结束符,则可以,但加了sync后就都可以了
                     //这可能也说明换行输入ctrl+z可以自动清空流,但始就直接输入就不行
  
  while(cin>>i)
   ivec2.push_back (i);
  
  //比较是否前面是相同的
  bool b=true;
  if(ivec1.size ()<=ivec2.size ())              //ite1内的元素较少,以它作边界
  {
   for(vector<int>::iterator ite=ivec1.begin (),ite2=ivec2.begin ();ite!=ivec1.end ();++ite,++ite2)       
   {
    if(*ite!=*ite2)
    {
     b=false;
     break;
       }
    else
     b=true;
   }

  }
  else                             //ite2内的元素较少,以ite2为边界 
  {
   for(vector<int>::iterator ite=ivec1.begin (),ite2=ivec2.begin ();ite2!=ivec2.end ();++ite,++ite2)   
   {
    if(*ite!=*ite2)
    {
     b=false;
     break;
       }
    else
     b=true;
   }

  }

  //输出结果
  if(b)
   cout<<"存在前缀关系"<<endl;
  else
   cout<<"不存在前缀关系"<<endl;
 
       return 0;
    }

 

 /*
            181页习题6.16,比较两个vector<int>对象,看是否有前缀关系
 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值