【发布时间】:2011-11-08 14:24:18
【问题描述】:
我正在尝试使用 boost::phoenix 库对下面的向量进行排序。 Foo 类有一个成员函数'int getvalue()'。目的是使用“getvalue()”返回的值对向量进行排序。但是缺少一些东西。我收到编译器错误,因为“::second 不是类或命名空间”
std::vector<std::pair<int, Foo> > fooVec;
boost::phoenix::sort ( boost::phoenix::bind( &std::pair<int, Foo>::second::getvalue(), boost::phoenix::arg_names::arg1) (*fooVec.begin() ), std::less<int>() );
谁能解释一下。我需要进行哪些更改才能完成这项工作?
谢谢。
PS:我知道我可以使用函数对象/lambda 或类似的东西,但我想尝试 boost::phoenix。
【问题讨论】:
-
我认为这不会对您的向量进行排序。第一个参数必须是要排序的范围。既然你用它做了一个凤凰表情,你的向量就不会改变。
-
你能告诉我正确的方法吗?谢谢...
-
我添加了一个答案,并举例说明了在这种情况下我将如何使用 phoenix。但这与您的方法不同,因为我不能再使用 std::less 了。但也许有帮助。
标签: c++ boost stl boost-bind boost-phoenix