我称之为
bool cmpNAME(const PlayerCard& a, const PlayerCard& b){
return (a.Name < b.Name);//Name is std::string
}
list<PlayerCard> tmp;
//fill tmp
stable_sort(tmp.begin(), tmp.end(), cmpNAME);//error at this line
并且编译器给我错误,它缺少 operator- for PlayerCard,但是为什么当我为这个结构定义比较器时
我得到的错误:/usr/include/c++/4.8/bits/stl_algo.h|3508|error: no match for ‘operator-’ (operand types are ‘std::_List_iterator<PlayerCard>’ and ‘std::_List_iterator<PlayerCard>’)|
我想要实现的是比较名称,如果它们相同,则按我将它们插入列表的顺序进行比较
最佳答案
std::stable_sort
需要一个随机访问迭代器。 list
的迭代器不是随机访问的。
使用 std::list::sort
.
关于c++ - stable_sort 缺少运算符 - 定义了自定义比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30014201/