中一道 基础题
我看<C++ primer >(第三版)的第三章时有这样一道练习题:
已知下面的函数声明:
bool is_equal (const int * ia, int ia_size, const vector<int> &ivec);
请实现下列行为:如果两个容器大小不同,则比较相同大小部分的元素。一旦某个元素不相等,
则返回false.如果所有元素都相等,则返回true。请用iterator 迭代访问vector,并写一个
main()函数来测试is_equal()函数。
我自己写了程序如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool is_equal ( const int *a, int ia_size, const vector<int> &ivec );
void main()
{
const int ia[] = {0,1,2,3,4,5,6};
vector<int> ivec (ia , ia+7);
bool flag = is_equal( ia, 7, ivec);
if (flag)
cout<<"true"<<endl;
else
cout<<"false"<<endl;
}
bool is_equal ( const int *a, int ia_size, const vector<int> &ivec )
{
int vec_size = ivec.size();
if( vec_size == ia_size)
{
int i = 0;
for ( vector<int>::iterator it = ivec.begin(); it != ivec.end(); ++it)//此行有错误
{
if(a[i] != *it)
return false;
++i;
}
return true;
}
else
{
int m_size = vec_size < ia_size ? vec_size:ia_size;
for ( int i = 0; i < m_size; ++i)
{
if(a[i] != ivec[i])
return false;
}
return true;
}
}
程序必须把红色的const去掉才能运行,要不然会报错说不能将 const int * 型转成 int * 型。
我在ivec声明时前面加上const也不行,请问怎么写才能使程序如题中要求的那样形参为const型?