указание аргументов для функции сравнения в C ++ sort - PullRequest
0 голосов
/ 02 ноября 2019

Мой вопрос заключается в том, как функция сравнения в функции сортировки C ++ принимает параметры. если я хочу отсортировать массив, но также хочу сохранить индекс элементов, я подумал о сортировке массива индекса на основе элементов в реальном массиве. Проблема в том, что я не могу найти способ передачи параметров в функцию сравнения. Предположим, что массив 3 5 4 2 индексы 0 1 2 3. Я хочу вывод массива индекса 3 0 2 1, который равен 2 3 4 5. Как я могу сделать это с помощью функции сортировки.

1 Ответ

3 голосов
/ 02 ноября 2019

Один из способов сделать это:

vector<int> data{  3, 5, 4, 2 },
            index{ 0, 1, 2, 3 };
sort(index.begin(), index.end(), [&data](int i, int j) { return data[i] < data[j]; });
for (int i : index)
{
    cout << i << ' ';
}
...