Gibt es eine Lösung mit einem Liner (oder einer einfachen Schleife), um einen Vektor nach seinen geraden und ungeraden Indizes zu sortieren? Beispiel:Sortiert Vektor nach geraden und ungeraden Indizes. C++
long entries[] = {0,1,2,10,11}; // indices 0 1 2 3 4
std::vector<long> vExample(entries, entries + sizeof(entries)/sizeof(long));
vExample.sortEvenOdd(vExample.begin(),vExample.end()); // magic one liner I wish existed...
for (int i = 0; i < vExample.size(); i++)
{
std::cout << vExample[i] << " ";
}
Nun möchte Ich mag die folgende Ausgabe haben:
0 2 11 1 10 // corresponding to indices 0 2 4 1 3
benutze 'std :: end (entries)' anstelle von long expression berechnend – Slava
das funktioniert auch: 'std :: vector vBeispiel {0,1,2,10,11}' –
anatolyg
Wenn du Boost benutzen kannst, [' boost.strided'] (http://www.boost.org/doc/libs/1_55_0/libs/range/doc/html/range/reference/adaptors/reference/strided.html) ist alles was Sie brauchen. Auf diese Weise müssten Sie den Vektor nicht wirklich neu ordnen, was die Leistung verbessern könnte. –