Ich habe eine Codierung Problem gestoßen eine 2D-Vektor (Matrix) in Bezug auf das Sortieren einer gewünschten Kriterien std::sort
aus der Bibliothek mit algorithm
Sortieren einer 2D-Vektor mit bestimmten Kriterien std :: sort
Zum Beispiel lassen Sie uns sagen, dass ich ein 2D haben
Vektor1,8,3
1,9,1
1,4,2
^
und ich möchte es von der 3. Spalte sortieren (nach Kriterien Beispiel Wachstum) So nach dem sortieren ich möchte eine Matrix haben:
1,9,1
1,4,2
1,8,3
^
Ich weiß, dass die dritte Funktion in std::sort
gesendet werden muss, um Sortierkriterien in std::sort
anzugeben. Wenn es ein 1D vector
wäre, wäre das kein Problem. Ich würde ein Lambda innerhalb std::sort
mit 2 Parametern machen, sie vergleichen und wahr/falsch zurückgeben.
Jetzt können Sie das Problem sehen, das ich gegenüberstelle, wie kann ich auf bestimmte Elemente innerhalb einer Matrix, in meinem Fall dritte Spalte Elemente zugreifen und sie mit std::sort
vergleichen?
#include <iostream>
#include <vector>
#include <algorithm>
void printMatrix(std::vector<std::vector<int>> m) {
for(int i = 0; i < m.size(); i++) {
for(int j = 0; j < m[i].size(); j++) {
std::cout << m[i][j] << " ";
}
std::cout << std::endl;
}
}
int main() {
std::vector<std::vector<int>> m{
{1,8,3},
{1,9,1},
{1,4,2}
};
std::sort(m.begin(), m.end(), [](int a, int b) { // error
// ???
});
printMatrix(m);
return 0;
}
Ich möchte keine anderen externen Bibliotheken verwenden, um dieses Problem zu lösen.
Jede Hilfe wird sehr geschätzt! :)
Danke! Die Lösung ist einfacher als ich dachte! :) – galaxyworks
@galaxyworks. Bitte schön. Jederzeit! Ich bin froh, dass das dein Problem löst. :-) – WhiZTiM