簡體   English   中英

同步排序多個向量

[英]Sorting several vectors in synch

假設我想根據向量A按升序對向量A、B和C進行排序,這樣向量B和C就會相應變化。 如果向量 A 包含兩個或多個相同的元素,則優先考慮對應向量 C 上的較大值。 舉個例子。

A=25,10,10,5,5

B=12,14,3,45,6

C=123,23,12,45,76

排序后會是這個樣子

A=5,5,10,10,15

B=6,45,14,3,12

C=76,45,23,12,123

誰能告訴如何為此編寫 c++ 程序?哪個庫可以用於此?

使用range-v3 ,您可以使用zip視圖:

std::vector A = {25,10,10,5,5};
std::vector B = {12,14,3,45,6};
std::vector C = {123,23,12,45,76};
auto r = ranges::view::zip(A, B, C);
ranges::sort(r,
             std::less<>{},
             [](const auto& tup){
                 return std::make_tuple(std::get<0>(tup), -std::get<2>(tup));
             });

演示

(而不是用投影“作弊”並否定 C 值,您可以創建自定義比較器)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM