请教《C++ Primer》里3.11节后的一道题目,Exercise 3.25

yujunfei_xy 2009-04-01 12:01:36
练习 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
劳烦各位费心了!
不胜感激!
...全文
144 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yujunfei_xy 2009-04-01
  • 打赏
  • 举报
回复
谢谢chin_chen,按照你的指导,将程序改过之后,就能正确运行了!
多谢了呵呵!


chin_chen 2009-04-01
  • 打赏
  • 举报
回复
----》const vector <int> &ivec


vector <int>::iterator it=ivec.begin(); 改为 vector <int>::const_iterator it=ivec.begin();

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧