向量携带的是一对由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
答案 0 :(得分:8)
如果您使用std::sort(v.begin(), v.end());
,它将按第一个元素排序,然后按第二个元素排序。因此,如果您只使用默认排序,您将获得所需的排序。
这是因为std::pair
重载了<
运算符,首先按first
元素排序,然后按second
排序。