Czy istnieje jedno rozwiązanie liniowe (lub proste bez pętli) do sortowania wektora według jego nieparzystych i nieparzystych wskaźników? Przykład:Sortuj wektor według indeksów parzystych i nieparzystych. 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] << " ";
}
Teraz chciałbym mieć następujący wynik:
0 2 11 1 10 // corresponding to indices 0 2 4 1 3
użyj 'std :: end (wpisy)' zamiast długiego wyrażenia obliczając go – Slava
to również działa: 'std :: vector vPrzykład {0,1,2,10,11}' –
anatolyg
Jeśli możesz użyć Boost, [' boost.strided'] (http://www.boost.org/doc/libs/1_55_0/libs/range/doc/html/range/reference/adaptors/reference/strided.html) to wszystko, czego potrzebujesz. W ten sposób nie musiałbyś nawet zmieniać kolejności wektora, co mogłoby poprawić wydajność. –