首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个程序那里错了?解决方案

2012-03-05 
这个程序那里错了??#include iostream#include vectorusingnamespacestdboolis_equal(constint*ia,in

这个程序那里错了??
#include <iostream>
#include <vector>
using   namespace   std;

bool   is_equal(const   int   *ia,int   ia_size,   const   vector <int>   &ivec);
{
int   i=0;

for(vector <int> ::iterator   it=ivec.begin();it!=ivec.end();++it)
{if(i==it)
break;
if(ia[i++]!=*it)

          return   false;
}
return   true;
}

void   main()
{

    intia[8]={4,6,5,9,3,2,1,5};
    int       iav[11]={4,6,5,9,3,2,1,5,9,5,3};
 
      vector <int>   &ivec(iav,iav+10);

      cout < <is_equal(ia,8,ivec) < <endl;
}

[解决办法]
bool is_equal(const int *ia,int ia_size, const vector <int> &ivec);
{
int i=0;

for(vector <int> ::iterator it=ivec.begin();it!=ivec.end();++it)
// 应该是 vector <int> ::const_iterator
{if(i==it) // 应该是i==ia_size
break;
if(ia[i++]!=*it)
return false;
}
return true;
}

[解决办法]
这样改一下就符合你的要求了

#include <iostream>
#include <vector>
using namespace std;

bool is_equal(const int *ia, int ia_size, const vector <int> &ivec)
{
int i = 0;
//这里用const_iterator 才符合要求
for (vector <int> ::const_iterator it = ivec.begin();
it != ivec.end(); ++it)
{
if(i == *it) //比较的是迭代器it指向的值所以加*
break;
if(ia[i++] != *it)

return false;
}
return true;
}

void main()
{

intia[8]={4,6,5,9,3,2,1,5};
int iav[11]={4,6,5,9,3,2,1,5,9,5,3};

vector <int> ivec(iav, iav+10);

cout < <is_equal(ia, 8, ivec) < <endl;
}

[解决办法]
vitin is right!

热点排行