Zitat von
Mielas
Das wäre zwar möglich, aber unnötigerweise umständlich, zu unsicher sowie möglicherweise auch nicht unbedingt performant, weil es eine reine C-Funktion ist, die mit C++ erstmal nichts am Hut hat. Für einen std::vector ist das suboptimal.
Besser kommt man in dem Fall mit std::sort().
Das könnte im beschriebenen Fall mit den drei Werten a, b und c in einem Objekt so aussehen:
Code:
#include <algorithm>
#include <vector>
struct Object
{
int a, b, c;
};
//Vergleichsfunktion
bool compareObject(const Object& x, const Object& y)
{
if (x.a<y.a) return true;
if (x.a>y.a) return false;
if (x.b<y.b) return true;
if (x.b>y.b) return false;
return (x.c<y.c);
}
int main(void)
{
std::vector<Object> vec;
// Vektor befüllen
...
//sortieren
std::sort(vec.begin(), vec.end(), compareObject);
//ausgeben, weiterverarbeiten,...
...
}