Сортировка с сохранением позиции

109
26 декабря 2021, 07:50

Есть ли стандартная функция которая позволяет отсортировать массив (вектор или список) с сохранением индексов или как сделать такую сортировку в "две строки"?

std::list<int> src {1, 8, 3, 6, 5};
std::list<uint> res = magicFunc(&src);
// src == [ 1, 3, 5, 6, 8]
// res == [ 0, 2, 4, 3, 1]
Answer 1

Вариант - сортировать вектор индексов со своей функцией сравнение.

vector<int> src = { 1, 8, 3, 12, 5, 9 };
vector<int> res = { 0, 1, 2, 3, 4, 5 };
sort(res.begin(), res.end(),
     [&src](int i, int j) {
         return src[i] < src[j];
    });
for (int i : res) cout << i << "  ";
cout << endl;
READ ALSO
Кодировка Хаффмана на с++

Кодировка Хаффмана на с++

Пытался сделать программу, которая кодировала бы заданные слова методом Хаффмана, но она работает не идеальноЕсли вводить всего 1 символ...

99
C6386: Переполнение буфера при записи

C6386: Переполнение буфера при записи

Реализую свой класс для работы с матрицами, но в одном из методов класса при анализе кода Visual Studio сообщает о переполнении буфера

258
Задача по функциям C++ [закрыт]

Задача по функциям C++ [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

251
C++, приоритет операторов

C++, приоритет операторов

Рассмотрим следующий пример:

106