gpt4 book ai didi

c++ - vector 排序算法,只对大于 0 的元素进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:57 25 4
gpt4 key购买 nike

我必须对结构 vector 进行排序。假设该结构有两个成员:

Struct game
{
string name;
int rating;
};

所以我创建了一个 std::vector<game>游戏,并按评分对它们进行简单排序。

std::sort(games.begin(),games.end(), [](game& info1, game& info2)
{
return info1.rating > info2.rating;
});

目前一切正常。问题是如果所有游戏的评级值为 0,它们就会混合。简而言之,我必须只对评分大于零的元素进行排序。让我们举个例子:

所有游戏都按字母顺序和等级 0 的名称推送到 vector 中,当触发排序时,字母顺序会被破坏。

排序前的例子:

"A_Game" , "B_Game" , "C_Game" , "E_Game" , "G_Game"等(继续接下来的所有字母)

排序后(所有游戏的评分均为 0):

"G_Game" , "S_Game" , "P_Game" , "M_Game" , "L_Game" , "I_Game"

我只需要对评分大于 0 的游戏进行排序。提前致谢。

最佳答案

您可以使用 std::stable_sort以防止移动不受排序标准影响的元素。

std::stable_sort(games.begin(),games.end(), [](game& info1, game& info2)
{
return info1.rating > info2.rating;
});

关于c++ - vector 排序算法,只对大于 0 的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53814928/

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