【发布时间】:2021-09-26 16:57:55
【问题描述】:
我有一个定义如下的pair向量:
vector<pair<int, myClass *>> myVector;
使用以下方式对向量进行排序:
sort(myVector.begin(), myVector.end());
这段代码不是我的,一切正常。
我唯一不明白但我想了解的是:
当我的向量中有两个元素具有与第一个相同的 int 值时,如何进行排序?依据什么标准?
我首先想到的是,它基于指向我的对象的指针的值。但是我看不到。
我想理解它,因为我需要在 Matlab 上的演示器上重现这种行为(排序)。
【问题讨论】:
-
答案在手册中,因为它经常发生在operator==,!=,<,<=,>,>=,<=>(std::pair)。
-
看看
std::pair::operator<是如何定义的。 -
指向两个独立创建的对象的指针是不可比较的,即使实现可以比较它们,结果也毫无意义——您(通常)无法控制分配。所以你可以假设第一个组件相同的项目是随机排序的。
-
感谢您的回答。我看着它,但仍然无法弄清楚。我的第二个是具有多个属性的对象(其他对象的向量、结构、迭代器、布尔值)。对于具有相同int的排序元素,我检查了第二个的每个值,找不到逻辑。
-
@CiaPan:这个过程是重复的,首先相等的项目总是按相同的顺序排列。但我找不到模式。