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