我有一對int和一個向量內的字符串,如何在int的基礎上首先對它們進行排序,如果int值是重複的,則根據字典的字典方式進行排序。如何對矢量內的元素進行排序?
vector< pair<int, string> > v;
我有一對int和一個向量內的字符串,如何在int的基礎上首先對它們進行排序,如果int值是重複的,則根據字典的字典方式進行排序。如何對矢量內的元素進行排序?
vector< pair<int, string> > v;
你剛纔:
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;
});
如果向量有這些元素:鎳鉻合金85,akash 99,bhanu 85,我想排序,這樣載體現在將有akash 99,bhanu 85,nitin 85 –
您提供的答案將給出以下輸出:bhanu 85,nitin 85, akash 99但想要與此相反。 –
@ Ni3_k - 因此傳遞一個比較謂詞來執行自定義排序。 –
我所做的就是爲INT存儲值與-1相乘,然後按升序對其進行排序,然後再乘以-1到存儲的int值以恢復int值。這樣做會根據需要安排對的向量。
['std :: sort'](http://en.cppreference.com/w/cpp/algorithm/sort)。不需要別的東西。 – NathanOliver