Переменная x
является вектором n
ints, и я хочу отсортировать вектор в порядке возрастания. Однако по причинам, выходящим за рамки этого вопроса, я хочу, чтобы вектор оставался нетронутым. Поэтому вместо того, чтобы сортировать содержимое x
, я хочу создать еще один вектор индексов n
, где каждый индекс ссылается на соответствующее значение в x
, если x
должны были быть отсортированы.
Например:
std::vector<int> x = {15, 3, 0, 20};
std::vector<int> y;
// Put the sorted indices of x into the vector y
for (int i = 0; i < 4; i++)
{
std::cout << y[i];
}
Должен выдавать результат:
2
1
0
3
Соответствует значениям в x:
0
3
15
20
Я могу думать о множестве своевременных способов реализации этого, но мне интересно, имеет ли STL что-то встроенное для эффективного выполнения этого для меня?