首页 > 后端开发 > C++ > 如何将用户定义的键类型与 C STL 映射一起使用?

如何将用户定义的键类型与 C STL 映射一起使用?

Susan Sarandon
发布: 2024-12-24 01:54:10
原创
541 人浏览过

How to Use User-Defined Key Types with C   STL Maps?

使用用户定义的键类型了解 STL 映射

在 C 语言中,STL 映射提供了强大的数据结构,用于根据唯一键组织数据。但是,使用具有用户定义类型的映射可能会导致编译错误。

根本原因:缺少比较运算符

错误消息突出显示缺少重载的 less-用户定义类 Class1 的比运算符 (

使用自定义比较器进行解析

要解决此问题,您可以创建一个自定义比较器类来定义 Class1 对象的比较逻辑。例如:

struct Class1Compare {
  bool operator() (const Class1& lhs, const Class1& rhs) const {
    return lhs.id < rhs.id;
  }
};

std::map<Class1, int, Class1Compare> c2int;
登录后复制

这里,Class1Compare 类提供了根据 id 值比较 Class1 对象的实现。

替代方案:专门化 std::less

或者,您可以将 std::less 模板专门用于 Class1对象:

namespace std {
  template<> struct less<Class1> {
    bool operator() (const Class1& lhs, const Class1& rhs) const {
      return lhs.id < rhs.id;
    }
  };
}
登录后复制

通过专门化 std::less,您可以为 Class1 对象提供特定的比较逻辑,同时最大限度地降低代码复杂性。

以上是如何将用户定义的键类型与 C STL 映射一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板