c++ - 如果我打算使用任意类对象作为键,我可以使用 STL 映射吗?

标签 c++ stl associative-array

我是 STL 新手。关于使用 map 存储任意对象让我感到困惑的事情:

std::map<MyClassObj, MyDataObject> MyMap;

是我查找对象的方式。例如,MyMap.find (MyClassObjInstance) 将如何工作?我是否需要实现自己的迭代器并提供一些包含一些等价函数的标准函数?任何示例将不胜感激。

是否有另一种方法可以使用标准库存储任意对象的关联列表?我已经在使用 STL 来维护平台的可移植性,并且不希望添加另一个库依赖项,例如 BOOST。

最佳答案

std::map在 key 和 value 之后有第三个模板参数,表示将使用哪个函数来比较键。默认情况下,它是 std::less ,它又使用 operator< .因此,如果您的类有一个运算符<,没关系,否则您可以提供自己的比较器。

关于c++ - 如果我打算使用任意类对象作为键,我可以使用 STL 映射吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1380567/

相关文章:

c++ - 为什么字符串 operator= 上的 double free?

php - 如果值存在于另一个数组中,如何递归过滤数组

php - 如果它们具有相同的值,则打乱关联数组中键的顺序?

c++ - Boost序列化编译报错,一头雾水

c++ - 从 std::set::insert() 返回迭代器是常量?

C++ 案例 multimap

c++ - find_if 函数构建问题

PHP 按值重新排序数组

c++ - 我如何访问结构 vector 的元素

c++ - 指向另一个对象的指针