c++以多种方式访问相同的元素
c++ access same elements in more than one way
我的Item
类如下所示:
class Item {
int unique_key;
long property;
};
我有一个数字或项目,我需要在恒定的O(1)时间内通过unique_key
(每个项目不同)和property
(更多项目可以具有相同的属性)访问它们。
我在想这样的事情:
std::map<int, Item*> my_map1;
std::multimap<long, Item*> my_map2;
但我想知道是否有其他更好的解决方案,使用更少的内存,避免保持映射同步
我需要在恒定的O(1)时间内访问它们
std::map
和std::multi_map
都没有常量时间访问元素,它们都是O(lg N)。如果你需要常量访问,你必须使用std::unordered_map
和std::unordered_multimap
,它们都是c++ 11中引入的容器。
如果你没有访问c++ 11编译器,那么就没有字典/哈希表容器是常量时间访问的。
然而,如果unique_key
s以这样的方式生成,使它们为0…N, property
s也为0…M,对于某个N M,那么你可以简单地有:
std::vector<Item*> my_map1;
std::vector<std::vector<Item*>> my_map2;
如果您有一个密集的id集合,那么它将具有恒定的访问并且是最有效的解决方案。但是,如果id集合是稀疏的(例如,可能您有id 0、500和1000万),那么这种解决方案就很糟糕。
相关文章:
- 使用不带参数的函数访问结构元素
- 我想访问std::unique_ptr中的一个特定元素
- 访问类lintalizer列表中的结构元素
- 从C++中的对列表中访问特定元素
- 访问动态分配列表中的元素
- 如何从静态向量访问类元素?
- 以C++访问矢量中的地图元素
- 映射基于自动的循环单元素访问C++
- 用元组作为C 的元素访问元组
- 元素访问(获取和放置)在C++中使用 std::vector
- 在Haskell中使用O(1)元素访问实现高效的类似拉链的数据结构
- std::map - 无异常且无需插入的元素访问
- C++2D矢量声明和来自调试器的元素访问
- 迭代器性能的重点应该放在高级还是元素访问上
- groot集合-元素访问
- 矩阵元素访问
- 对于boost::hana::tuple,元素访问的时间复杂度是多少?
- c++向量元素访问
- 通用容器和可变元素访问
- std::vector中的每个元素访问都是缓存未命中吗