当插入太多元素时,std::map是否自动调整大小
Does std::map auto-resize when too many elements are inserted?
当插入太多元素时,STL的std::map会自动调整大小吗?如果是的话,费率是多少?
据我所知,它应该有一个,但我找不到任何关于resize()的
如果std::map做了大小调整,如何调整大小调整率?
当添加元素时,映射会一次增长一个节点…你不能像vector
那样"调整"它们的大小——先抓取一个连续的内存块,而不是之后抓取许多小块——因为它们无论如何都不使用这样的连续块。它们有链接各个节点的指针,每个节点有一个元素。
当您插入元素时,所有STL容器都会自动"调整大小"。例如,当您使用some_container::insert
功能向容器中插入元素时,无论您插入多少元素,您都不必做其他任何事情(直到达到某些物理限制,例如内存耗尽或点击container::max_size()
)。
你的意思是"调整大小"…这是不可能调整"调整率",即使在那些内容,这一概念是适用的(如在std::vector
的情况下)。resize
方法(即使它存在)不调整"调整大小率"。容器的增长策略是一个实现细节,不向用户公开,也不能由用户控制。
同时,std::map
的典型实现将为每个映射元素单独分配存储空间。这样的容器没有也不需要任何"调整大小率"。它的大小调整策略固定为"每增加一个元素需要添加一个元素"或"每增加N个元素需要添加N个元素"。
相关文章:
- 检查私有成员变量是否在一定范围内,如果没有调整
- 访问"std::vector"的保留但未调整大小的内存作为原始内存是否安全?
- 调整向量大小并检索值,这是否正确或在任何情况下都可能导致段错误?
- 是否有提供可调整 dpi、可选文本和 CSS 支持的 HTML 到 PDF 渲染器?
- 调整STD ::向量的大小是否可以降低其能力
- “调整大小”是否有降低矢量容量的风险
- 英特尔 IPP 图像大小调整功能是否关心 alpha 值的位置
- WinAPI.检查窗口大小调整是否已完成
- 如何判断 std::vector 是否调整了自身大小,以及如何解释指向向量内值的指针不再有效
- 重载分辨率:调整 const/ref 是否不比用户定义的转换更好?
- 调整ROI是否会改变cv::Mat的整体大小
- 编译器是否调整整数大小
- 调整外部向量的大小是否会复制内部向量
- 在 C# 中是否有用于列表的方法<T>,例如在 C++ 中为矢量<T>调整大小
- 是否可以调整令牌权限提升为管理员权限
- 通过每次调整矢量大小在矢量中插入元素是否需要更多时间
- 是否可以调整输入参数以采用指针而不是引用
- Asio:是否有一个可自动调整大小的缓冲区来接收输入
- std::vector是否适合频繁调整大小
- 矢量自动调整大小在多线程代码中是否是一种危险情况