0

ベクトルによって運ばれるのは、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
4

1 に答える 1

8

を使用するstd::sort(v.begin(), v.end());と、最初の要素でソートされ、次に 2 番目の要素でソートされます。したがって、デフォルトの並べ替えを使用するだけで、目的の順序が得られます。これは、最初に要素でソートし、次に でソートするように演算子をstd::pairオーバーロードするためです。<firstsecond

于 2013-10-24T10:30:06.993 に答える