2016-04-14 25 views
-6

Bir vektörün içinde bir çift int ve string var, bunları int temelinde ilk olarak nasıl sıralayacağımı ve int değeri çiftse, daha sonra dizge sözlük tarzına göre sırala.Vektör içindeki çiftlerin öğeleri nasıl sıralanır?

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

['std :: sort'] (http://en.cppreference.com/w/cpp/algorithm/sort). başka hiçbir şeye gerek yok. – NathanOliver

cevap

1

You sadece:

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

std::pair

leksikografik karşılaştırılır.

Öte yandan

o zaman aşağıdaki şekilde özel bir karşılaştırıcı defind olurdu göre std::pair ikinci elemanını bunları sıralamak istiyorsanız:

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

vektörü şu unsurları içeriyorsa: nitin 85, akash 99, bhanu 85, vektörü şimdi akash 99, bhanu 85, nitin 85 –

+0

olacak şekilde sıralamak istiyorum aşağıdaki çıktıyı verecektir: bhanu 85, nitin 85, akash 99 ama bunun tam tersini istiyorum. –

+2

@ Ni3_k - Özel sıralamalarınızı gerçekleştirmek için Karşılaştırma karşılaştırmasını iletin. –

0

ne ben yaptım int depolamak oldu değeri -1 ile çarpılır ve sonra artan düzende sıralanır ve daha sonra int değerlerini geri yüklemek için depolanan int değerine -1 ile çarpılır. Bunu yapmak, ihtiyaç duyulan şekilde düzenlenmiş çiftlerin vektörünü yaptı.

İlgili konular