2013-08-03 112 views
-4

如果我有一個vector<pair<int,int> >數據類型,什麼是第二,如果首創相等,由一對的第一個元素進行排序,然後將接受的方式?比如,也許(1,10),(3,3),(7,13),(7,16),(8,1),(8,2),(15,2)等按C++中的第一個元素對中的第二個元素對一個對的向量排序?

+1

'的std :: sort'自定義比較 – Borgleader

+1

呃,夥計,你要通過第二,如果首創等於排序,但你對我的回答您的評論,否則說。 – nneonneo

+0

您最初對我的問題發表了評論:*「第二種維護秩序的任何方式?」*那麼究竟是什麼問題呢? –

回答

8

默認比較第一個元素,然後第二個。所以,如果你不關心維護時的第一要素比較相等的順序,那麼你可以只使用std::sort

std::sort(v.begin(), v.end()); 
+0

這就是我已經使用,但它似乎沒有按預期工作 – MyNameIsKhan

+0

以什麼方式?需要注意的是,如果第一個元素相同(而不是保留原始順序),它將按第二個元素排序。 – nneonneo

+0

@AaststASicilian您可能正在尋找'std :: stable_sort'? – Rapptz

1

std::pairs comparison operators字典順序比較對,它首先比較的第一要素,那麼第二個元素,如果第一個要素是平等的。

Here is an example of using std::vector<std::pair<int, int>> and std::sort

使用std::sort這種方式使用std::pairoperator <,正如上面所說的,對按字母順序比較。

更新:Here is an example using std::stable_sort and a custom comparison function that compares only the first element

使用std::stable_sort,這樣保證了平等元素的相對順序將被保留。也就是說,即使std::pairs的第一個元素相等,原始相對順序仍然保留。

+0

任何方式在第一次相等時在第二秒增加訂單? – MyNameIsKhan

相關問題