gpt4 book ai didi

c++ - 列表排序不正确

转载 作者:行者123 更新时间:2023-11-30 02:04:31 25 4
gpt4 key购买 nike

我正在尝试按 desc 顺序设置列表,将最高设置到列表的前面,但它没有这样做,这是我正在使用的结构

struct  datalist
{
short index;
int nNumber;

bool operator > (const datalist& a) const
{
return (nNumber > a.nNumber);
}
};

我正在做

datalist* pAR = new datalist;
pAR->index = 1000;
pAR->nNumber = 10;
m_SomeList.push_back(pAR);

pAR = new datalist;
pAR->index = 1005;
pAR->nNumber = 30;
m_SomeList.push_back(pAR);

pAR = new datalist;
pAR->index = 0;
pAR->nNumber = 20;
m_SomeList.push_back(pAR);

m_SomeList.sort(greater<datalist*>());

排序后,它输出 20, 30, 10,我使用的是 VS 6.0,在我收到需要升级的评论之前,我知道这是一个旧编译器,但在我的如果我需要它,所以请在回答时记住这一点,最好的描述性、有用的答案会获得投票。

最佳答案

您正在对指针容器进行排序,因此容器对指针使用 std::greater,因此它们按地址 以非降序排序。 p>

你想做这样的事情:

struct Comp {
bool operator()(const datalist* a, const datalist* b) {
return *a > *b;
}
};

m_SomeList.sort(Comp());

m_SomeList.sort([](const datalist* a, const datalist* b) {
return *a > *b;
}); // for C++11

另外正如克里斯提到的,您可能希望按值而不是指针存储这些对象,这样您就不必清理它们。

关于c++ - 列表排序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10576394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com