簡體   English   中英

C ++按列排序2d向量

[英]C++ sort 2d vector by column

有人能告訴我在不使用boost的情況下用C ++中的列對2d向量進行排序的最佳方法。 我做了一些搜索,我找不到一個好的答案。

謝謝

要回答這個問題,我必須做出假設,這意味着你可以給我們更多的信息。

假設1:你所謂的“2D矢量”是矢量矢量,例如vector<vector<int>>

假設2a:內部向量是行,這意味着,您希望通過例如其內部向量的第二個元素對外部向量進行排序。 在那種情況下, std::sort啟動,它有一個重載,它將比較器作為其第三個參數。 你唯一要做的就是編寫一個比較器(即函數,函數對象,lambda等),它采用兩個向量並將它們與第N個元素進行比較。 不應該太難。

假設2b:內部向量是 ,即您想要對其中一個內部向量進行排序,並將重新排序應用於每個其他行。 這有點復雜,例如你可以制作索引0到N的另一個向量,並用比較器對其進行排序,給定兩個索引ij通過實際比較column[i]column[j]比較它們。 對該向量進行排序后,可以相應地重新排序所有列。

STL中的sort()函數可以為您完成。 您只需要編寫一個函數來比較矢量中的2個案例。

http://www.cplusplus.com/reference/algorithm/sort/

之后,它取決於您需要的排序類型,您可以逐列排序,然后排序第一行。

暫無
暫無

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

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