哪个更好,一般来说,地图或c ++中的矢量?

-1 c++ memory stl vector map

据我所知,在向量中访问元素需要恒定的时间,而在map中需要对数时间.但是,存储地图比存储矢量占用的内存少.

因此,我想问哪一个更好?我正在考虑在我的程序中使用其中一个,它有大约1000个元素.我打算使用3维向量,这将需要1000x1000x1000个元素.

Jay*_*Jay 15

这个问题没有正确的答案.正确的问题应该是"哪个更适合特定的应用 - 在这里插入你的项目 - ".要选择正确的容器,您需要解释它将如何使用.


rlb*_*ond 9

地图是一个关联容器 - 它提供与矢量完全不同的功能.如果要将键与值关联,请使用映射.如果你的键只是非负连续整数,那么向量在各方面都是优越的.


Xor*_*rty 7

矢量和地图是用于不同目的的两个不同的容器.如果有一个更好,另一个将不存在......


Jas*_*n B 5

首先,存储地图几乎肯定会占用比矢量更多的内存,因为矢量只是一个连续的块而一个地图包含一个树结构.

你的问题更好的答案是,它取决于你试图解决的问题.这实际上取决于您希望如何索引数据.如果您的数据可以用整数线性索引,那么向量将表现最佳.

但是,在许多情况下,您需要以其他方式访问您的数据.例如,如果要使用字符串(如字典查找)索引数据,则地图将表现更好.要使用向量使用字符串索引数据,如果不保持向量排序,则必须执行线性搜索(O(n))以查找元素.地图只需执行二进制搜索(O(log n)),随着n的增长,这将快得多.