我计划将我自己的比较功能与boost bimap一起使用。我要解决的问题是当我将boost bimap与指针一起使用时,比较不应该比较两个指针,而应该比较指针所指向的类。
我尝试了以下代码。但是它甚至没有编译。我究竟做错了什么?还有一种更简单的方法来实现较少的功能,该功能比较两个对象而不是两个指针(指针)
typedef std::set<int> ruleset;
template <class myclass>
bool comp_pointer(const myclass &lhs, const myclass &rhs)
{
return ((*lhs) < (*rhs));
}
typedef boost::bimap<set_of<ruleset *, comp_pointer<ruleset *> >, int> megarulebimap;
错误讯息:
party1.cpp:104:64:错误:“模板结构增强:: bimaps :: set_of”的模板参数列表中参数2的类型/值不匹配
party1.cpp:104:64:错误:预期为类型,获取了“ comp_pointer”
party1.cpp:104:70:错误:模板参数1无效
party1.cpp:104:85:错误:“;”之前的声明中的类型无效代币
最佳答案
typedef std::set<int> ruleset;
struct ruleset_cmp {
bool operator()(const ruleset *lhs, const ruleset *rhs) const
{
return ((*lhs) < (*rhs));
}
};
typedef boost::bimap<set_of<ruleset *, ruleset_cmp>, int> megarulebimap;
好的。以上代码段有效。似乎需要在这里使用函子。