сортировка — сортировка c ++ не использует пользовательские функции

Я пытаюсь сортировать

std::vector< std::vector< std::string> > perm;

Я пытаюсь использовать std::sort из заголовка алгоритма

Я позвонил с

std::sort( perm.begin(), perm.end(), sortPerms);

Это моя функция сортировки:

bool sortPerms (const std::vector<std::string> &i, const std::vector<std::string> &j) {
for(unsigned int x = 0; x < i.size(); x++) {
if(i[x] != j[x])
return false;
}
//both are equal
return true;
}

Целью сортировки является вызов std :: unique для получения вектора с уникальными значениями.
Когда я компилирую с gcc в cygwin, я не получаю ошибок, но у меня есть повторы, и когда я компилирую с Visual Studio 2010, я получаю ошибку, что оператор< не определено.
Я прошел через него, и он пытается использовать свою собственную функцию сортировки, а не ту, которую я определил.

Я не уверен, как это исправить, какие-либо предложения?

Другие детали:
Гарантируется, что все векторы будут одинакового размера.
Его целью является вектор каждой перестановки исходного вектора строк.
Каждая строка — это команда, и я ищу все различные способы, которыми эти команды могут быть перетасованы. Так что мне нужно раздеть дубликаты.

0

Решение

Ваша функция сортировки должна вернуться, когда a < bне a != b,

Также по умолчанию std::vector<> должен уже поддерживать лексикографическое сравнение через operator<, который должен делать то, что вы ожидаете (сравнить каждый элемент по очереди, с первыми неэквивалентными элементами, используемыми для сравнения). Увидеть http://en.cppreference.com/w/cpp/container/vector/operator_cmp

Ваша текущая функция sortPerms выглядит так, как вы бы передали std::unique, но это поведение отличается от предиката, используемого для std::sort,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]