关于c++ sort函数的用法

#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;classsum{publi... #include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class sum
{
public:
sum()
{
}
~sum()
{
}
bool cmp(int x,int y)
{
return x > y;
}
void data()
{
vector<int>test;
test.push_back(5);
test.push_back(1);
test.push_back(9);
sort(test.begin(),test.end(),cmp);
cout<<test[0]<<endl;
cout<<test[1]<<endl;
cout<<test[2]<<endl;
}
};
void main()
{
sum a;
a.data();

}
sort第三个参数比较函数,怎样调用其他类的函数?
展开
 我来答
暴雁兰7A
2014-03-26 · TA获得超过158个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:142万
展开全部
根据你的描述,以struct为元素的vector需要排序,直接在结构体重重载小于号就行了。后续插入到vector中的元素就会以重载的方法升序排列。
struct Item
{
int i;
string str;
bool operator<(const Item &other) const
{
if (i < other.i) // i升序
{
return true;
}
else if (i == other.i)
{
if (strcmp(str.c_str(), other.str.c_str()) < 0) //str升序
{
return true;
}
}
return false;
}
};
如上代码可供参考,如果问题解决,请采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lsslddd
2014-03-26 · TA获得超过936个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:417万
展开全部
c++泛型库的sort函数不需要cmp指针
sort(test.begin(),test.end()); //就这样就好了
更多追问追答
追问
是这样的,我只是随便打了一个例子,其实vector里面存了一个结构体,所以我必须写一个比较函数,但是我发现在类里面这样调用时错误的,求它的正确调用方法
追答

那你要把类方法定义成静态的,然后用sum::cmp引用,某些编译器可能要用&(sum::cmp)

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class sum
{
public:
sum()
{
}
~sum()
{
}
static bool cmp(int x,int y)  //静态的
{
return x > y;
}
void data()
{
vector<int>test;
test.push_back(5);
test.push_back(1);
test.push_back(9);
sort(test.begin(),test.end(),sum::cmp);   //sum::cmp
cout<<test[0]<<endl;
cout<<test[1]<<endl;
cout<<test[2]<<endl;
}
};
void main()
{
sum a;
a.data();

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式