gpt4 book ai didi

c++ - boost::phoenix::sort 错误

转载 作者:行者123 更新时间:2023-11-27 23:27:49 25 4
gpt4 key购买 nike

我正在尝试使用 boost::phoenix 库对下面的 vector 进行排序。 Foo 类有一个成员函数“int getvalue()”。目的是使用“getvalue()”返回的值对 vector 进行排序。但有些东西不见了。我收到编译器错误,因为“::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。

最佳答案

如评论所述,我认为您从 vector 创建凤凰 Actor 的方式不能用于对其进行排序,但我从未使用过凤凰的算法,所以我不确定。您当然可以使用 sort 并创建一个带有 phoenix 的仿函数来对其进行排序。
所以我建议以这种方式使用凤凰。

boost::phoenix::sort(boost::phoenix::placeholders::arg1, boost::phoenix::placeholders::arg2)(fooVec, 
boost::phoenix::bind( &Foo::getvalue, boost::phoenix::bind( &std::pair<int, Foo>::second, boost::phoenix::placeholders::arg1)) < boost::phoenix::bind( &Foo::getvalue, boost::phoenix::bind( &std::pair<int, Foo>::second, boost::phoenix::placeholders::arg2))
);

关于c++ - boost::phoenix::sort 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8051858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com