C++ 为什么set\u缓存\u散列\u代码只对std::\u无序\u映射可用?

C++ 为什么set\u缓存\u散列\u代码只对std::\u无序\u映射可用?,c++,hash,c++11,C++,Hash,C++11,我可以看到std::\uuuuUnordered\uMap和\uuuCache\uHash\uCode=true有很大的运行时性能提升。但它不可用于std::无序\u映射。\uuuuuu cache\u hash\u code=true是否已弃用?名称中任何带有双下划线(\uuuuuuu)的标识符都是由实现保留的,因此它是一段特定于实现的代码,将来可能会或不会受到相同或不同语义的支持 除非分析表明散列是程序中的一个重要瓶颈,否则只需使用标准容器来帮助实现可维护性和可移植性。std::unorde

我可以看到
std::\uuuuUnordered\uMap
\uuuCache\uHash\uCode=true
有很大的运行时性能提升。但它不可用于
std::无序\u映射
\uuuuuu cache\u hash\u code=true是否已弃用?

名称中任何带有双下划线(
\uuuuuuu
)的标识符都是由实现保留的,因此它是一段特定于实现的代码,将来可能会或不会受到相同或不同语义的支持


除非分析表明散列是程序中的一个重要瓶颈,否则只需使用标准容器来帮助实现可维护性和可移植性。

std::unordered_map
支持自定义散列函数。如果分析表明需要缓存,则可以在自定义哈希函子中实现该缓存。它可以非常便携。