我有一个std :: multimap,其中key是一个自定义类.像这样的东西:
Class X { public: std::string s; int x; operator <(const X& other) const { return s < other.s; } }; std::multimapmymap;
现在,我想使用upper_bound和lower_bound迭代具有相同值"s"的所有元素.我是否需要为X实现一些其他运算符(例如:==).或者它会像这样正常工作?
另外,我应该提供什么作为upper_bound和lower_bound的参数?我假设我应该创建一个具有所需"s"值的虚拟对象?
因为class X
是multimap的关键,所以upper_bound()
/ lower_bound()
需要的参数是该类型的参数.如果class X
有隐式转换std::string
(这是其类型X::s
),那么您可以将其用作upper_bound()
/ 的参数lower_bound()
.
multimap的默认比较less<>
只是调用operator <()
- 这是您需要让多class X
图表工作的唯一操作符.