如何使用std :: string中的unordered_map对字符串文字进行is_transparent功能?

Joh*_*itb 13 c++ unordered-map c++14

环顾cppreference,我发现从"等效键" std::unordered_map 获得高效的查找功能.

我认为这意味着等效键必须具有相同的哈希值.我如何为字符串文字提供相同的哈希值,而std::hash<std::string>不是临时构造一个std::string,从而使得关于等价键的全部观点为无效?

Cub*_*bbi 5

这是cppreference中的错误; 对于无序的关联容器,没有模板化的查找.

比较,从n3690,

§23.5.4.1[unord.map.overview]

// lookup
iterator find(const key_type& k);
const_iterator find(const key_type& k) const;
size_type count(const key_type& k) const;
Run Code Online (Sandbox Code Playgroud)

§23.4.4.1[map.overview]

// 23.4.4.5, map operations:
iterator find(const key_type& x);
const_iterator find(const key_type& x) const;
template <class K> iterator find(const K& x);
template <class K> const_iterator find(const K& x) const;
size_type count(const key_type& x) const;
Run Code Online (Sandbox Code Playgroud)


m8m*_*ble 5

C++20 已采用无序容器的异构查找( p0919p1690)。它已经在gcc11.0 和clang12.0 中可用。