读书人

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

发布时间: 2012-03-05 11:54:02 作者: rapoo

这个程序那里错了??
#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!

读书人网 >C++

热点推荐