当前位置:  开发笔记 > 编程语言 > 正文

std :: multimap中键的要求

如何解决《std::multimap中键的要求》经验,为你挑选了1个好方法。

我有一个std :: multimap,其中key是一个自定义类.像这样的东西:

Class X {
public:
    std::string s;
    int x;
    operator <(const X& other) const { return s < other.s; }
};
std::multimap mymap;

现在,我想使用upper_bound和lower_bound迭代具有相同值"s"的所有元素.我是否需要为X实现一些其他运算符(例如:==).或者它会像这样正常工作?

另外,我应该提供什么作为upper_boundlower_bound的参数?我假设我应该创建一个具有所需"s"值的虚拟对象?



1> Michael Burr..:

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

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

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有