std :: multimap中键的要求

Mil*_*kov 1 c++ multimap

我有一个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_boundlower_bound的参数?我假设我应该创建一个具有所需"s"值的虚拟对象?

Mic*_*urr 5

因为class X是multimap的关键,所以upper_bound()/ lower_bound()需要的参数是该类型的参数.如果class X有隐式转换std::string(这是其类型X::s),那么您可以将其用作upper_bound()/ 的参数lower_bound().

multimap的默认比较less<>只是调用operator <()- 这是您需要让多class X图表工作的唯一操作符.