如何在复合类型上使用Boost.Bind?
我有
std::map<int, std::pair<short, float> >
,我需要在这张地图中找到最小的short
。我怎么能用boost::bind
和std::min_element()
这个?
boost::lambda
?
没有找到相关结果
已邀请:
3 个回复
雇砰
迭代器会给你一个
,其中
是
键,
是地图的
值,所以如果你有一个迭代器
,你需要所有
值的最小值。
函数需要第三个参数的比较函数,因此您需要构建一个比较函数,该函数投影其两个参数的
。 我们将从一些typedef开始,使代码更具可读性:
我们将使用Boost.Lambda作为其重载运算符,允许我们使用
。 Boost.Bind可以绑定成员变量以及成员函数,因此我们也将利用它。
这也适用于
。
超可林
(当然,有人会抱怨这是滥用STL而且这些扩展不在C ++标准中......)
岭取
不能单独做到这一点,因为
和
是作为字段而不是方法公开的(所以你不能get23ѭ这样的东西)。 你当然可以使用自己的仿函数来做到这一点: