首页 > 解决方案 > uint16_t 到 uint16_t 映射的最有效容器

问题描述

我正在为处理能力非常有限的机器开发程序,我想将uint16_t键映射到uint16_t值。

我目前正在使用std::map使用非安全阅读:

std::map<uint16_t, uint16_t> m;
//fill m only once

while(true){
    auto x = m[y];
}

性能仍不能满足要求。在执行速度方面是否有更好的解决方案?

编辑: 一些信息:

标签: c++performancedictionary

解决方案


如果没有更多关于您的地图的上下文,

如果您打算使用很多键,那么像之前建议的大数组将很容易处理,因为不会发生冲突,但是如果您不打算使用所有内存,则可能会很浪费。

如果您打算使用相当数量的数据,但不足以导致过多的哈希冲突,std::unordered_map 已摊销 O(1) 查找,并且如果您不关心它们的存储顺序在,这可能是一个很好的猜测。

如果您使用的数据不多并要求它灵活,那么 std::vector 是一个不错的选择

鉴于我们所知道的是,它是 uin16_t 到 uint16_t 的映射,没有一个最佳答案。


推荐阅读