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

Does std::map auto-resize when too many elements are inserted?

本文关键字:是否 调整 map 元素 太多 std 插入      更新时间:2023-10-16

当插入太多元素时,STL的std::map会自动调整大小吗?如果是的话,费率是多少?

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

如果std::map做了大小调整,如何调整大小调整率?

当添加元素时,映射会一次增长一个节点…你不能像vector那样"调整"它们的大小——先抓取一个连续的内存块,而不是之后抓取许多小块——因为它们无论如何都不使用这样的连续块。它们有链接各个节点的指针,每个节点有一个元素。

当您插入元素时,所有STL容器都会自动"调整大小"。例如,当您使用some_container::insert功能向容器中插入元素时,无论您插入多少元素,您都不必做其他任何事情(直到达到某些物理限制,例如内存耗尽或点击container::max_size())。

你的意思是"调整大小"…这是不可能调整"调整率",即使在那些内容,这一概念是适用的(如在std::vector的情况下)。resize方法(即使它存在)不调整"调整大小率"。容器的增长策略是一个实现细节,不向用户公开,也不能由用户控制。

同时,std::map的典型实现将为每个映射元素单独分配存储空间。这样的容器没有也不需要任何"调整大小率"。它的大小调整策略固定为"每增加一个元素需要添加一个元素"或"每增加N个元素需要添加N个元素"。