C++中的稀疏数组

Gur*_*rio 2 c++ map data-structures c++11

我需要一个类似矢量的容器,带有整数索引,但是省略了一些索引.那么在C++中表示这种稀疏数组的常用方法是什么?我有一种直觉,即std :: map主要用于此类目的.但对于通常不添加新物品的容器来说,这是相当缓慢的.你能提出什么建议?

UPD:不是很"稀疏".也许大约5%.项目主要在初始化步骤期间添加(并且通常不会在之后).但访问频繁(显然我不会开始这个话题,如果它不重要).

Lig*_*ica 7

是的,地图通常是正确的方法.

我建议使用C++ 11 unordered_map(基于哈希表)来获得快速查找:如果没有连续的递增键,它几乎是最好的.

  • @John Dibling维基百科,"稀疏数组":"数组的简单实现可能为整个数组分配空间,但在非默认值很少的情况下,这种实现效率很低." 具有N个元素的向量(如在数学中)总是具有N个元素,但是稀疏数组的实现不应该分配所有无用的存储.我不确定你的"稀疏容器"是什么意思,但是有一个带有大量未使用空间的*容器*并不是实现稀疏向量的明智选择. (3认同)