Как и qsort()
, похоже, что C ++ std::sort()
не позволяет передавать пользовательские данные в функцию сортировки.
Например: массив структуры типа struct A { int version; int index; } array[100]
должен быть отсортирован по порядку, но с использованием этого массива struct B { int value; } key[100]
в качестве ключа сортировки.struct A::index
массив индексов key
.
Вот нерабочая функция сортировки.Он должен иметь указатель на массив key
: 1011
bool comp(struct A *a1, struct A *a2) {
return key[a1->index].value < key[a2->index].value;
}
1014 * Как этого добиться с помощью C ++?Как передать неглобальные пользовательские данные, такие как
key
, в функцию сортировки?
Я пытался передать экземпляр объекта как std::sort
comp, но, похоже, разрешены только функции qsort()
.
(В GNU C можно использовать вложенную функцию сравнения для использования переменных области действия, но GNU C ++ не предлагает вложенные функции).