C++stl问题reverse_iterator

#include<vector>#include<iostream>usingnamespacestd;template<classT>boolfun(constvect... #include<vector>
#include<iostream>
using namespace std;
template <class T>
bool fun(const vector<T>& v)
{
vector<T>::const_iterator i=v.begin();
vector<T>::reverse_iterator r=(const vector<T>&)v.rbegin();
for(;i!=v.end()&&r!=(const vector<T>&)v.rend();)
{
if(*i!=*j)return false;r++;i++;
}
return true;
}
void main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(2);
v.push_back(1);
if(fun(v))cout<<"true!"<<endl;
}
错误::
\exe1\main.cpp(22) : see reference to function template instantiation 'bool __cdecl fun(const class std::vector<int,class std::allocator<int> > &)' being compiled
exe1\main.cpp(9) : error C2784: 'bool __cdecl std::operator !=(const class std::allocator<_Ty> &,const class std::allocator<_U> &)' : could not deduce template argument for 'const class std::allocator<_Ty> &' from 'class std::r
everse_iterator<int *,int,int &,int *,int>'
exe1\main.cpp(22) : see reference to function template instantiation 'bool __cdecl fun(const class std::vector<int,class std::allocator<int> > &)' being compiled
exe1\main.cpp(9) : error C2784: 'bool __cdecl std::operator !=(const class std::allocator<_Ty> &,const class std::allocator<_U> &)' : could not deduce template argument for 'const class std::allocator<_Ty> &' from 'class std::r
everse_iterator<int *,int,int &,int *,int>'
exe1\main.cpp(22) : see reference to function template instantiation 'bool __cdecl fun(const class std::vector<int,class std::allocator<int> > &)' being compiled
\exe1\main.cpp(9) : error C2784: 'bool __cdecl std::operator !=(const struct std::pair<_T1,_T2> &,const struct std::pair<_T1,_T2> &)' : could not deduce template argument for 'const struct std::pair<_T1,_T2> &' from 'class std::
reverse_iterator<int *,int,int &,int *,int>'
我初学STL
这个应该就是reverse_iterator的常参数问题了 怎么解决啊 谢谢了
展开
 我来答
真白的纱雾d442c
2011-06-30 · TA获得超过1093个赞
知道小有建树答主
回答量:265
采纳率:0%
帮助的人:539万
展开全部
reverse_iterator也有const版本的const_reverse_iterator,直接使用即可,不用与const_iterator进行类型转换。
可编译的程序如下:
#include<vector>
#include<iostream>
using namespace std;

template <class T>
bool fun(const vector<T>& v)
{
vector<T>::const_iterator i=v.begin();
vector<T>::const_reverse_iterator r=v.rbegin();
for(;i!=v.end()&&r!=v.rend();)
{
if(*i!=*r)return false;r++;i++;
}
return true;
}
void main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(2);
v.push_back(1);
if(fun(v))cout<<"true!"<<endl;
}
房菱
2011-06-30 · TA获得超过1438个赞
知道小有建树答主
回答量:2656
采纳率:0%
帮助的人:0
展开全部
vector <Pro> mydata;
应该可以。
你是不是用了排序却没有定义 < 运算?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式