Có một giải pháp lót (hoặc một vòng lặp đơn giản) để sắp xếp một véc tơ bằng các chỉ số chẵn và lẻ của nó không? Ví dụ:Sắp xếp vectơ theo chỉ số chẵn và lẻ. 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] << " ";
}
Bây giờ tôi muốn có kết quả như sau:
0 2 11 1 10 // corresponding to indices 0 2 4 1 3
sử dụng 'std :: end (mục)' thay vì biểu thức dài tính toán nó – Slava
điều này cũng hoạt động: 'std :: vector vExample {0,1,2,10,11}' –
anatolyg
Nếu bạn có thể sử dụng Boost, [' boost.strided'] (http://www.boost.org/doc/libs/1_55_0/libs/range/doc/html/range/reference/adaptors/reference/strided.html) là tất cả những gì bạn cần. Bằng cách đó bạn thậm chí sẽ không phải thực sự sắp xếp lại véc-tơ, điều này có thể giúp thực hiện. –