2016-10-25 3 views
2

Ich versuche, einen Vektor von unsigned int in lexikographischer Reihenfolge zu sortieren.Schnelle Möglichkeit, lexikographisch 2 Zahlen zu vergleichen

Die Funktion std :: lexicographical_compare unterstützt nur Iteratoren, daher bin ich mir nicht sicher, wie man zwei Zahlen vergleicht.

Dies ist der Code, den ich zu verwenden bin versucht:

std::sort(myVector->begin(),myVector->end(), [](const unsigned int& x, const unsigned int& y){ 
     std::vector<unsigned int> tmp1(x); 
     std::vector<unsigned int> tmp2(y); 
     return lexicographical_compare(tmp1.begin(),tmp1.end(),tmp2.begin(),tmp2.end()); 
}); 
+0

Sie wollen also Vergleichen Sie Zahlen mit ihren Dezimalziffern? – wilx

+3

Können Sie ein Beispiel geben, wenn eine Zahl lexikographisch weniger, aber numerisch größer oder gleich einem anderen ist? – kfsone

+0

Sind Sie sicher, dass Ihr Code funktioniert? – Ebrahimi

Antwort

2

C 11 ++ stellt std::to_string

Sie von to_string wie unten verwenden:

std::sort(myVector->begin(),myVector->end(), [](const unsigned int& x, const unsigned int& y){ 
     std::string tmp1 = std::to_string(x); 
     std::string tmp2 = std::to_string(y); 
     return lexicographical_compare(tmp1.begin(),tmp1.end(),tmp2.begin(),tmp2.end()); 
}); 
Verwandte Themen