LINUX.ORG.RU

Переставить элементы контейнера в фиксированной последовательности

 ,


0

1

Вопрос знатокам стандартной библиотеки для C++ до 20. Есть ли такая стандартная машинерия, которая переставляет элементы контейнера в порядке указанных индексов?

Что-то типа:

std::list<int> xs{1, 2, 3, 4, 5};
std::vector<int> xsIndices{2, 0, 3, 1, 4};
std::reorder(xs.begin(), xs.end(), xsIndices.begin());

и в результате в xs будет 3 -> 1 -> 4 -> 2 -> 5.

★★★★★

std::sort с кастомным компаратором

или std::shuffle с URBG, выдающим индексы в нужной последовательности - но это уже совсем черная магия, и только для контейнеров со случайным доступом

Lrrr ★★★★★
()
Последнее исправление: Lrrr (всего исправлений: 1)
Ответ на: комментарий от cyberhoffman

кратко но медленно) 100k элементов за 8.5сек core5, когда просто сортировка списка 3сек, те лучше сортировку переделать

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 2)