【发布时间】:2014-04-16 00:05:59
【问题描述】:
我有一个std::list,我想使用从一组中选择的比较器进行排序。我想使用 boost bind 来定义比较器,这样我就可以为每个比较器隐式定义一个函数。大意是:
struct MyStruct { int a; int b };
std::list<MyStruct> myList;
...
myList.sort(_1.a < _2.a);
以上代码无法编译。我的问题是,如何使用 boost 内联定义比较器?
【问题讨论】:
-
只是好奇...你有 C++11 编译器吗?有什么理由不想使用 lambda?
-
不幸的是,我没有 c++11 :(
-
试试
myList.sort(bind(&MyStruct::a, _1) < bind(&MyStruct::b, _2))。该用法记录在here。 -
您确定要订购吗?
_1.a < _2.b不是一个定义明确的严格弱排序。示例:(0,1)比(0,2)小和大...