2016-04-14 81 views
-6

我有一對int和一個向量內的字符串,如何在int的基礎上首先對它們進行排序,如果int值是重複的,則根據字典的字典方式進行排序。如何對矢量內的元素進行排序?

vector< pair<int, string> > v; 
+0

['std :: sort'](http://en.cppreference.com/w/cpp/algorithm/sort)。不需要別的東西。 – NathanOliver

回答

1

你剛纔:

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

std::pair按字典順序進行比較。

在另一方面,如果你想將它們相對於排序std::pair的第二個元素,那麼你將不得不在以下方式defind一個自定義的比較:

std::sort(v.begin(), v.end(), [](std::pair<int, std::string> const &p1, 
           std::pair<int, std::string> const &p2) { 
            return (p1.second == p2.second)? 
              p1.first < p2.first : 
              p1.second < p2.second; 
           }); 
+0

如果向量有這些元素:鎳鉻合金85,akash 99,bhanu 85,我想排序,這樣載體現在將有akash 99,bhanu 85,nitin 85 –

+0

您提供的答案將給出以下輸出:bhanu 85,nitin 85, akash 99但想要與此相反。 –

+2

@ Ni3_k - 因此傳遞一個比較謂詞來執行自定義排序。 –

0

我所做的就是爲INT存儲值與-1相乘,然後按升序對其進行排序,然後再乘以-1到存儲的int值以恢復int值。這樣做會根據需要安排對的向量。

相關問題