C++ 使用自定义类在无序_映射中查找函数

C++ 使用自定义类在无序_映射中查找函数,c++,stl,find,C++,Stl,Find,我正在使用std::unordered_映射和自定义类,如下所示。我已经正确初始化并设置了哈希函数。我想知道的是如何使用find函数以及它将返回什么?我感到困惑,因为参考文档说,对于无序的_映射,值充当键 所以我想知道迭代器在下面的find函数中指向什么 class xyz { public: int x; int y; int z; //Required stuff . . . } // Required Stuff . . . int main() { std::unorde

我正在使用std::unordered_映射和自定义类,如下所示。我已经正确初始化并设置了哈希函数。我想知道的是如何使用find函数以及它将返回什么?我感到困惑,因为参考文档说,对于无序的_映射,值充当键

所以我想知道迭代器在下面的find函数中指向什么

class xyz {
public:
 int x;
 int y;
 int z;

//Required stuff
.
.
.
}

// Required Stuff
.
.
.

int main()
{
  std::unordered_map<class xyz, std::string, KeyHasher> dummy = {
    { {10, 11, 12}, "example"},
    { {2, 3, 21}, "another"}
  };
  std::unordered_map<xyz, std::string, keyHasher>::const_iterator got = dummy.find({2, 3, 21});

  //What will find return here? Is it the pointer to string "another"?

}
xyz类{
公众:
int x;
int-y;
intz;
//必需的东西
.
.
.
}
//必需的东西
.
.
.
int main()
{
std::无序映射虚拟={
{{10,11,12},“示例”},
{{2,3,21},“另一个”}
};
std::无序映射::常量迭代器get=dummy.find({2,3,21});
//这里返回什么?是指向字符串“另一个”的指针吗?
}
关于自定义类的基本设置,我参考了以下内容。


给定的固定代码,例如:

std::unordered_map<xyz, std::string, keyHasher>::const_iterator got = dummy.find({2, 3, 21});
std::无序映射::常量迭代器get=dummy.find({2,3,21});
find
在这里返回什么?它是指向另一个字符串的指针吗

它是匹配的{key,value}
std::pair
的迭代器

  • 您可以使用
    get!=dummy.end()

  • 如果且仅当找到时,您可以使用符号
    got->second
    访问值
    “另一个”
    ,或者作为
    got->first
    再次访问键

因为参考文档说对于无序的_映射,值充当键,所以感到困惑


这是错误的-
unordered_映射
不使用该值作为键。。。它将值与键相关联,这样就可以使用上面讨论的键查找值。

应该是
std::unordered\u map
std::unordered\u map
谢谢,更正了。谢谢。关于第二个问题,我误解了参考文件。()我引用了文档中的信息“在无序集合中,元素的值同时是它的键,它唯一地标识了它。”这一行让我感到困惑:)谢谢。@nightfury:说起来有点奇怪,如果使用自定义比较或
运算符,可能会产生误导