我有一个std :: multimap,其中key是一个自定义类.像这样的东西:
Class X {
public:
std::string s;
int x;
operator <(const X& other) const { return s < other.s; }
};
std::multimap<X, int> mymap;
Run Code Online (Sandbox Code Playgroud)
现在,我想使用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图表工作的唯一操作符.
| 归档时间: |
|
| 查看次数: |
1981 次 |
| 最近记录: |