gpt4 book ai didi

c++ - 在 C++ 中使用 vector 对排序

转载 作者:行者123 更新时间:2023-11-30 01:04:44 24 4
gpt4 key购买 nike

我正在使用 vector 对对使用循环插入第一个和第二个元素的位置进行排序

vect.push_back(make_pair(count[i],arr[i]));

sort(vect.begin(),vect.end());

cout<<vect[i].second<<" ";

如果我的计数相等,那么我想按照它们插入 vector 的顺序打印第二个元素,

但这并没有发生。

谁能告诉我为什么?

最佳答案

来自 std::sort

Sorts the elements in the range [first, last) in ascending order. The order of equal elements is not guaranteed to be preserved.
1) Elements are compared using operator<.

来自 std::pair::operator<

3) If lhs.first < rhs.first, returns true. Otherwise, if rhs.first < lhs.first, returns false. Otherwise, if lhs.second < rhs.second, returns true. Otherwise, returns false.

如此有效,排序比较count[i] , 如果其中两个相等,则比较 arr[i] .


如果你想比较count s only 并保持相同键的原始顺序,您必须使用 std::stable_sort(first, last, comp)

Sorts the elements in the range [first, last) in ascending order. The order of equal elements is guaranteed to be preserved.

使用适当的比较运算符

std::stable_sort(vect.begin(), vect.end(),
[](const std::pair<int, T> &x, const std::pair<int, T> &y) {
return x.first < y.first;
}
);

关于c++ - 在 C++ 中使用 vector 对排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49490137/

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