C++ 插入太多元素时,std::map是否自动调整大小?

C++ 插入太多元素时,std::map是否自动调整大小?,c++,map,resize,C++,Map,Resize,STL的std::map是否在插入太多元素时自动调整大小?如果是,价格是多少 据我所知,它应该有一个,但我找不到resize()的任何内容 如果std::map确实调整了大小,如何调整调整速度?随着元素的添加,Maps会一次增加一个节点。。。你不能像向量一样“调整”它们的大小,因为它们不会像向量那样使用连续的内存块,所以你不能在前面抓取一个连续的内存块,而不是在后面抓取许多小的内存块。它们有链接单个节点的指针,每个节点有一个元素。贴图在添加元素时一次增长一个节点。。。你不能像向量一样“调整”它们

STL的std::map是否在插入太多元素时自动调整大小?如果是,价格是多少

据我所知,它应该有一个,但我找不到resize()的任何内容


如果std::map确实调整了大小,如何调整调整速度?

随着元素的添加,Maps会一次增加一个节点。。。你不能像向量一样“调整”它们的大小,因为它们不会像向量那样使用连续的内存块,所以你不能在前面抓取一个连续的内存块,而不是在后面抓取许多小的内存块。它们有链接单个节点的指针,每个节点有一个元素。

贴图在添加元素时一次增长一个节点。。。你不能像向量一样“调整”它们的大小,因为它们不会像向量那样使用连续的内存块,所以你不能在前面抓取一个连续的内存块,而不是在后面抓取许多小的内存块。它们具有链接单个节点的指针,每个节点有一个元素。

插入元素时,所有STL容器都会自动“调整大小”。也就是说,当您使用
some_container::insert
功能将元素插入到容器中时,无论插入多少元素,您都不必执行任何其他操作(直到达到某种物理限制,如内存耗尽或点击
container::max_size()

您还指的是“调整大小速率”。。。即使在该概念适用的承包商中,也不可能调整“调整速率”(如
std::vector
)。而
resize
方法(即使存在)不会调整“resize rate”。容器的增长策略是一个实现细节,不向用户公开,也不受用户控制


同时,
std::map
的典型实现将分别为每个map元素分配存储。这种容器没有也不需要任何“调整大小速率”。其调整大小策略固定为“每次需要一个元素时再添加一个元素”或“每需要N个元素时再添加N个元素”。

插入元素时,所有STL容器都会自动“调整大小”。也就是说,当您使用
some_container::insert
功能将元素插入到容器中时,无论插入多少元素,您都不必执行任何其他操作(直到达到某种物理限制,如内存耗尽或点击
container::max_size()

您还指的是“调整大小速率”。。。即使在该概念适用的承包商中,也不可能调整“调整速率”(如
std::vector
)。而
resize
方法(即使存在)不会调整“resize rate”。容器的增长策略是一个实现细节,不向用户公开,也不受用户控制


同时,
std::map
的典型实现将分别为每个map元素分配存储。这种容器没有也不需要任何“调整大小速率”。它的调整大小策略固定为“每次需要一个元素时再添加一个元素”或“每需要N个元素时再添加N个元素”。

地图不像矢量,它是树,而不是连续的内存块。地图不像矢量,它是树,不是连续的内存块。
std::array
不会自动调整大小。我认为这根本不能满足OP的要求。显然,他正在谈论调整备份内存存储的大小。我看不出这有什么帮助,也没有解释如何(可能)实现
map
。@Jamal:嗯,
std::array
也不允许您插入元素。@Ed S:还不清楚OP的主要问题是什么。恰恰相反,OP错误地认为,在contaner中插入元素需要对容器进行初步的“调整大小”。或者可能是OP认为“调整速度”在某种程度上是可控的。在这种情况下,我的回答实际上正是针对OP所说的内容。现在解释
map
是如何实现的肯定还为时过早。好吧,添加到向量会导致分配和复制(即“调整大小”)。此外,如果您知道需要存储的元素的最小数量,则可以通过某种方式控制向量的“调整大小速率”。我觉得你太迂腐了。我理解OP的目的,@Tony D.
std::array
也不自动调整大小。我认为这根本不能满足OP的要求。显然,他正在谈论调整备份内存存储的大小。我看不出这有什么帮助,也没有解释如何(可能)实现
map
。@Jamal:嗯,
std::array
也不允许您插入元素。@Ed S:还不清楚OP的主要问题是什么。恰恰相反,OP错误地认为,在contaner中插入元素需要对容器进行初步的“调整大小”。或者可能是OP认为“调整速度”在某种程度上是可控的。在这种情况下,我的回答实际上正是针对OP所说的内容。现在解释
map
是如何实现的肯定还为时过早。好吧,添加到向量会导致分配和复制(即“调整大小”)。此外,如果您知道需要存储的元素的最小数量,则可以通过某种方式控制向量的“调整大小速率”。我觉得你太迂腐了。我了解OP的目的,Tony D也是。