练习 3.25
已知下面的函数声明 bool is_equal( const int*ia, int ia_size,const vector<int> &ivec );
请实现下列行为如果两个容器大小不同则比较相同大小部分的元素一旦某个元素不相等则返回false 如果所有元素都相等则返回true 请用iterator 迭代访问vector 可以以本节中的例子为模型并且写一个main()函数来测试is_equal()函数.
本人写代码如下:
#include <cstdlib>
#include <iostream>
#include <vector>
#include <iostream>
using namespace std;
bool is_equal( const int* ia, int ia_size, const vector<int> &ivec )
{
vector<int>::iterator it=ivec.begin(); //编译的时候这一句都通不过,请教是怎么回事?
int i=0;
if( ia_size>=ivec.size() )
{
for( ; it!=ivec.end(); ++it, ++i)
if(*it!=ia[i])
return false;
}
else
{
for( ; i<ia_size; ++it, ++i)
if(*it!=ia[i])
return false;
}
return true;
}
int main(int argc, char *argv[])
{
const int ia_size=5;
int ia[ia_size]={0,1,2,3,4};
vector<int> ivec(ia, ia+4);
cout<<is_equal(ia,ia_size,ivec)<<endl; //相等,且数组元素多
ivec.push_back(4);
cout<<is_equal(ia,ia_size,ivec)<<endl; //相等,元素个数一样多
ivec.push_back(5);
cout<<is_equal(ia,ia_size,ivec)<<endl; //相等,且数组元素少
ivec[2]=3;
cout<<is_equal(ia,ia_size,ivec)<<endl; //不等
system("PAUSE");
return EXIT_SUCCESS;
}
另外,我使用的IDE是Dev C++ 5.0
劳烦各位费心了!
不胜感激!