find()问题
#include<iostream.h>#include<list>#include<vector>#include<algorithm>usingnamespacest...
#include<iostream.h>
#include<list>
#include<vector>
#include<algorithm>
using namespace std;
void main()
{
int a[6]={1,2,3,4,5,6};
list<int> l(a,a+6);
vector<int> v(a,a+6);
list<int>::iterator L1;
vector<int>::iterator L2;
list<int>::reverse_iterator L11;
vector<int>::reverse_iterator L22;
L1=find(&a[0],&a[6],10);
L2=find(&a[0],&a[6],10);
L11=find(&a[0],&a[6],10);
L22=find(&a[0],&a[6],10);
}
为什么出错??
int * p=find(&a[0],&a[6],10);
L2=find(&a[0],&a[6],10);
int * p2=find(&a[0],&a[6],10);
int * p3=find(&a[0],&a[6],10);
那为什么L2就可以啊?是不是这种参数是地址的用法,只能用vector<type>::iterator,而不可以用listr<type>::iterator或vector<type>::reverse_iterator或list<type>::reverse_iterator啊?
还有就是
比如
int arr[6]={1,2,3,4,5,6};
list<int> a(arr,arr+6);
cout<<a.begin()<<endl;
cout<<a.end()<<endl;
出错
但是
int arr[6]={1,2,3,4,5,6};
vector<int> a(arr,arr+6);
cout<<a.begin()<<endl;
cout<<a.end()<<endl;
就可以啊? 展开
#include<list>
#include<vector>
#include<algorithm>
using namespace std;
void main()
{
int a[6]={1,2,3,4,5,6};
list<int> l(a,a+6);
vector<int> v(a,a+6);
list<int>::iterator L1;
vector<int>::iterator L2;
list<int>::reverse_iterator L11;
vector<int>::reverse_iterator L22;
L1=find(&a[0],&a[6],10);
L2=find(&a[0],&a[6],10);
L11=find(&a[0],&a[6],10);
L22=find(&a[0],&a[6],10);
}
为什么出错??
int * p=find(&a[0],&a[6],10);
L2=find(&a[0],&a[6],10);
int * p2=find(&a[0],&a[6],10);
int * p3=find(&a[0],&a[6],10);
那为什么L2就可以啊?是不是这种参数是地址的用法,只能用vector<type>::iterator,而不可以用listr<type>::iterator或vector<type>::reverse_iterator或list<type>::reverse_iterator啊?
还有就是
比如
int arr[6]={1,2,3,4,5,6};
list<int> a(arr,arr+6);
cout<<a.begin()<<endl;
cout<<a.end()<<endl;
出错
但是
int arr[6]={1,2,3,4,5,6};
vector<int> a(arr,arr+6);
cout<<a.begin()<<endl;
cout<<a.end()<<endl;
就可以啊? 展开
2个回答
展开全部
你说的正确,vector的iterator就是一个地址指针
=====================================================
改成这样就不错:
int * p=find(&a[0],&a[6],10);
L2=find(&a[0],&a[6],10);
int * p2=find(&a[0],&a[6],10);
int * p3=find(&a[0],&a[6],10);
因为 find函数里的参数1与参数2以及返回的结果都必须是相同的数据类型;
你原来的代码L1为iterator,但参数1和2为int *,所以出错了.
=====================================================
改成这样就不错:
int * p=find(&a[0],&a[6],10);
L2=find(&a[0],&a[6],10);
int * p2=find(&a[0],&a[6],10);
int * p3=find(&a[0],&a[6],10);
因为 find函数里的参数1与参数2以及返回的结果都必须是相同的数据类型;
你原来的代码L1为iterator,但参数1和2为int *,所以出错了.
展开全部
#include<iostream>
#include<list>
#include<vector>
#include<algorithm>
using namespace std;
void main()
{
int a[6]={1,2,3,4,5,6};
list<int> l(a,a+6);
vector<int> v(a,a+6);
list<int>::iterator L1;
vector<int>::iterator L2;
list<int>::reverse_iterator L11;
vector<int>::reverse_iterator L22;
L1=find(l.begin(),l.end(),10);
L2=find(v.begin(),v.end(),10);
L11=find(l.rbegin(),l.rend(),10);
L22=find(v.rbegin(),v.rend(),10);
}
/*说明:find()用于在container中,寻找单一的值。若找的到,传回该iterator;若找不到,则传回container.end()。*/
#include<list>
#include<vector>
#include<algorithm>
using namespace std;
void main()
{
int a[6]={1,2,3,4,5,6};
list<int> l(a,a+6);
vector<int> v(a,a+6);
list<int>::iterator L1;
vector<int>::iterator L2;
list<int>::reverse_iterator L11;
vector<int>::reverse_iterator L22;
L1=find(l.begin(),l.end(),10);
L2=find(v.begin(),v.end(),10);
L11=find(l.rbegin(),l.rend(),10);
L22=find(v.rbegin(),v.rend(),10);
}
/*说明:find()用于在container中,寻找单一的值。若找的到,传回该iterator;若找不到,则传回container.end()。*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询