Почему возникает такая ошибка : binary ' -' : 'std:: _list_iterator< _mylist>' не определяет этот оператор или преобразование в тип, приемлемый для предопределенного оператора?
Здравствуйте, я написал следующий код для сортировки карты в c++ по второму значению кортежей (вместо первого значения). но это дает мне ошибку : "binary' -' : 'std:: _List_iterator< _Mylist>' не определяет этот оператор или преобразование в тип, приемлемый для предопределенного оператора", и позиция ошибки находится в заголовке "algorithm.h". почему это происходит?
<pre>template<class T> struct less_second : std::binary_function<T,T,bool> { inline bool operator()(const T& lhs, const T& rhs) { return lhs.second < rhs.second; } };
typedef std::pair<int,int> data_t; std::list<data_t> vec(groups.begin(), groups.end()); std::sort(vec.begin(), vec.end(), less_second<data_t>());
Что я уже пробовал:
Я использовал код из:STL std:: map and sorting using value_compare-общее Программирование - GameDev.net[^]
Richard MacCutchan
Где находится код, на который ссылается сообщение об ошибке?
Member 11807654
он находится в заголовке алгоритма (я использовал #include & lt;algorithm>) и показывает строку "_Sort(_Unchecked(_First), _Unchecked(_Last), _Last - _First, _Pred);" как позицию, в которой возникает ошибка. Я использую visual studio 2012
Richard MacCutchan
Код алгоритма пытается вычесть один элемент из другого, но типы, объявленные в вашем шаблоне, не могут использовать простое вычитание. Поэтому вам нужно определить перегрузку для этой операции.