c++ - 基于第一对的 "first"对 <std::pair<int, std::pair<int, int>>> 类型的 std::vector 进行排序的标准方法是什么

标签 c++ stl

vector 携带的 Teh 是一对由 id 索引的:

<std::pair<int, std::pair<int, int>>>

         496              1,   256

        (message id)   

如您所见,“id”是重复的。为了进一步处理这些数据,根据“消息 ID”对三元组进行排序在逻辑上对我来说非常有用。我如何使用 STL 函数执行此操作?

这是一些数据示例:

 15:38:08.307 - (I) ET02 -  For message Id: 496 Tag - value pair: 1 - 256
 15:38:08.307 - (I) ET02 -  For message Id: 496 Tag - value pair: 2 - 27060
 15:38:08.307 - (I) ET02 -  For message Id: 496 Tag - value pair: 3 - 2014-06-16T17:07:00.519
 15:38:08.307 - (I) ET02 -  For message Id: 487 Tag - value pair: 1 - 1044
 15:38:08.307 - (I) ET02 -  For message Id: 487 Tag - value pair: 2 - 9098150000
 15:38:08.307 - (I) ET02 -  For message Id: 498 Tag - value pair: 1 - 9098150000
 15:38:08.307 - (I) ET02 -  For message Id: 498 Tag - value pair: 2 - 9098150000
 15:38:08.307 - (I) ET02 -  For message Id: 498 Tag - value pair: 3 - 5902400000000
 15:38:08.307 - (I) ET02 -  For message Id: 498 Tag - value pair: 501 - 256000000000
 15:38:08.307 - (I) ET02 -  For message Id: 498 Tag - value pair: 502 - 0
 15:38:08.307 - (I) ET02 -  For message Id: 498 Tag - value pair: 503 - 0
 15:38:08.307 - (I) ET02 -  For message Id: 498 Tag - value pair: 504 - 9098150000
 15:38:08.307 - (I) ET02 -  For message Id: 498 Tag - value pair: 505 - 9098150000

最佳答案

如果你使用 std::sort(v.begin(), v.end()); ,它将按第一个元素排序,然后按第二个元素排序。因此,如果您只使用默认排序,您将获得所需的排序。 这是因为 std::pair重载 <运算符首先按 first 排序元素,然后由 second .

关于c++ - 基于第一对的 "first"对 <std::pair<int, std::pair<int, int>>> 类型的 std::vector 进行排序的标准方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19563315/

相关文章:

c++ - 在 C++ 中,具有任意数量参数的 Java 函数等于什么?

c++ - 迭代器和模板

c++ - std::map 插入 && 重载导致复制

c++ - 无法将 const 应用于 typedef 引用

c++ - Visual Studio 2017 cMake 图 TableView

c++ - 是否可以使用非常量键类型的 unordered_map?

c++ - 这个 bitset::count() 的实现是如何工作的?

c++ - 更新 std::set 以仅保留最小值

c++ - 为什么 std::vector::erase 参数更改为 const_iterator?

c++ - 为什么编译器声称此类方法没有返回值?