c++ - 理解对向量的排序(int和指向对象的指针)
问题描述
我有一个定义如下的对向量:
vector<pair<int, myClass *>> myVector;
使用以下方法对向量进行排序:
sort(myVector.begin(), myVector.end());
这段代码不是我的,一切正常。
我唯一不明白但我想了解的是:
当我的向量的两个元素具有与第一个相同的 int 值时,如何进行排序?依据哪些标准?
我首先想到的是,它基于指向我的对象的指针的值。但我看不到它。
我想理解它,因为我需要在 Matlab 上的演示器上重现这种行为(排序)。
解决方案
std::sort
用作std::less
默认比较器。对于std::pair
仅调用元素operator<
并相对于 进行排序的a first
,则second
。有关详细信息,请参见此处:https ://en.cppreference.com/w/cpp/utility/pair/operator_cmp 。
但是,比较不指向同一数组元素的指针<
是实现定义的。通常,您需要使用std::less
正确的指针比较。
因此,具有相同元素的顺序first
是实现定义的,难以准确复制。
推荐阅读
- object - 在对象赋值解构Javascript中使用冒号
- postgresql - 无法访问 Postgresql 上的数据库?
- regex - 在 Python 中验证一组日期的方法
- c# - 如何使用 tcp 服务器在 c# 和 python 中交换命令
- scala - 数据框完全外连接中的 OR 条件降低了性能 spark/scala
- python - 将自定义函数添加到 Python 中的现有类
- java - 使用java中的startsWith方法删除LinkedList元素
- android - 使用 IONIC 3 + CORDOVA 在 SQLite 中创建数据库
- javascript - 使用 setTimeout 运行函数然后打印消息
- javascript - 高阶函数返回纯函数