Sign-up....

关于vector中的迭代问题

#include <vector>

#include <iostream>

using namespace std;

//bool is_equal (const int* ia,int ia_size,const vector<int>& ivec) //error

bool is_equal (const int* ia,int ia_size,vector<int>& ivec)

{

int ivec_size = ivec.size();

int size = (ia_size<ivec_size)?ia_size:ivec_size;

int i=0;

vector<int>::iterator iter = ivec.begin();

for(; i<size; i++,iter++)

{

if(*iter != ia[i])

{

return false;

}

}

return true;

}

int main()

{

int ia[]={0,0,0,0,1};

vector<int> ivec(5,0);

cout<<is_equal(ia,5,ivec);

return 0;

}

如果讲is_equal声明换成注释掉的函数原型的话出错

错误原因:

vector<int>::iterator iter = ivec.begin(); ----不能将const int* 转化成int*

请问如果使用注释的函数原型的话,程序该怎么修改?

另外一个小问题,包含vector头文件的时候一定要使用using namespace std;吗?

什么时候需要?什么时候可以省略?

谢谢!

[717 byte] By [msdn] at [2007-8-14 20:08:18]
# 1 Re: 关于vector中的迭代问题

用using std;;vector;就可以了

darkstar21cn at 2005-6-29 18:10:33 >
# 2 Re: 关于vector中的迭代问题

定义为const了,就不能修改

oyljerry at 2005-6-29 18:28:41 >
# 3 Re: 关于vector中的迭代问题

楼上仁兄正解

参数为 const vector<int>& ivec,就用 ivec.begin()返回的就是 vector<int>::const_iterator

Jinhao at 2005-6-29 19:30:34 >
# 4 Re: 关于vector中的迭代问题

顶楼上的:_)

foochow at 2005-6-29 22:45:26 >
# 5 Re: 关于vector中的迭代问题

明白了

谢谢各位

minshuai at 2005-6-30 8:37:05 >

C/C++

All Classified