【发布时间】:2014-01-23 14:16:25
【问题描述】:
我需要一个类似向量的容器,具有整数索引,但省略了一些索引。那么在 C++ 中表示这种稀疏数组的常用方法是什么? 我有一种直觉,std::map 主要用于此类目的。但是对于通常不添加新项目的容器来说,它的速度相当慢。你有什么建议?
UPD:不是很“稀疏”。也许大约 5%。项目主要在初始化步骤期间添加(之后不经常添加)。但是访问很频繁(如果不是很重要,显然我不会开始这个话题)。
【问题讨论】:
-
尝试使用 boost 或 C++11 的无序映射。
-
“稀疏”有多稀疏?百分比?如果经常期望在两者之间存储附加值,则某些技术可能不合适。您是否需要按索引顺序频繁访问/迭代?
-
解释它有多慢。
-
boost flat map 是 map 的更快版本,除了插入速度非常慢 (O (n)) 所以你的使用模式必须是 fill map,use map,而不是:fill map,use,add,use , 添加, 删除, 使用...
-
这似乎是XY Problem。问题显然是性能要求,您假设实现这些要求的方法是使用稀疏数组。
标签: c++ c++11 data-structures map