gpt4 book ai didi

c++ - 当键被分配字符串时,是否有 Map 的优化版本?

转载 作者:搜寻专家 更新时间:2023-10-31 01:27:27 26 4
gpt4 key购买 nike

我正在使用一个以字符串作为键的 map 容器,但只是使用 std::map<std::string, Value>意味着 key 可能不是彼此本地的,由于缓存未命中,使容器在我的应用程序中使用成本高昂。

是否有解决此问题的现有解决方案,可以将每个单独的 key 数据保存在一个单一的传染性内存池中?

最佳答案

可能, std::unordered_map 可以帮助您,因为:

  • key 经过哈希处理
  • 在内部,项目存储在桶中,就像在 hash table 中一样。
  • 访问时间不变

补充说明:

此代码段可让您了解使用存储桶界面的 map 布局:

    std::cout << "Bucket count: " << m.bucket_count() <<std::endl; 
for (int i=0; i < m.bucket_count(); i++ ) {
std::cout <<" bucket "<< i << " : size " << m.bucket_size(i) << std::endl;
}
std::cout<<"Average bucket load:" <<m.load_factor()<<std::endl;

如果您从一开始就没有预见到足够的桶,并且如果 map 的动态增长导致桶负载不理想且碰撞太多,您可以重新散列 map :

m.rehash (2*m.bucket_count() );

Online demo

关于c++ - 当键被分配字符串时,是否有 Map 的优化版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53351887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com