首页 > 解决方案 > 理解对向量的排序(int和指向对象的指针)

问题描述

我有一个定义如下的对向量:

vector<pair<int, myClass *>> myVector;

使用以下方法对向量进行排序:

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

这段代码不是我的,一切正常。

我唯一不明白但我想了解的是:

当我的向量的两个元素具有与第一个相同的 int 值时,如何进行排序?依据哪些标准?

我首先想到的是,它基于指向我的对象的指针的值。但我看不到它。

我想理解它,因为我需要在 Matlab 上的演示器上重现这种行为(排序)。

标签: c++sortingstd-pair

解决方案


std::sort用作std::less默认比较器。对于std::pair仅调用元素operator<并相对于 进行排序的a first,则second。有关详细信息,请参见此处:https ://en.cppreference.com/w/cpp/utility/pair/operator_cmp 。

但是,比较不指向同一数组元素的指针<是实现定义的。通常,您需要使用std::less正确的指针比较。

因此,具有相同元素的顺序first是实现定义的,难以准确复制。


推荐阅读