Esiste una soluzione (o una semplice soluzione loop-free) per ordinare un vettore in base agli indici pari e dispari? Esempio:Ordina vettore con indici pari e dispari. 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] << " ";
}
Ora mi piacerebbe avere il seguente output:
0 2 11 1 10 // corresponding to indices 0 2 4 1 3
usa 'std :: end (entries)' invece di long expression calcolandolo – Slava
funziona anche: 'std :: vector vEsempio {0,1,2,10,11}' –
anatolyg
Se puoi usare Boost, [' boost.strided'] (http://www.boost.org/doc/libs/1_55_0/libs/range/doc/html/range/reference/adaptors/reference/strided.html) è tutto ciò che serve. In questo modo non avresti nemmeno bisogno di riordinare il vettore, il che potrebbe aiutare le prestazioni. –