添加和删除元素如何“重新调整”数据?矢量的大小是如何计算的(我相信它会被跟踪)?任何其他了解向量的其他资源将不胜感激。
原文由 Alan 发布,翻译遵循 CC BY-SA 4.0 许可协议
添加和删除元素如何“重新调整”数据?矢量的大小是如何计算的(我相信它会被跟踪)?任何其他了解向量的其他资源将不胜感激。
原文由 Alan 发布,翻译遵循 CC BY-SA 4.0 许可协议
大约一年前,我用 C++ 写了一个向量。它是一个具有设定大小(例如 16 个字符)的数组,在需要时会按该数量进行扩展。也就是说,如果默认大小是 16 个字符并且您需要存储 Hi my name is Bobby
,那么它将数组的大小加倍到 32 个字符,然后将 char 数组存储在那里。
原文由 Caleb Hearth 发布,翻译遵循 CC BY-SA 2.5 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
In terms of sizing, there are two values of interest for a
std::vector
:size
, andcapacity
(accessed via.size()
and.capacity()
)。.size()
是向量中包含的元素数量,而.capacity()
是在重新分配内存之前可以添加到向量中的元素数量。如果你
.push_back()
一个元素,大小将增加一,直到你达到容量。一旦达到容量,大多数(所有?)实现都会重新分配内存,使容量翻倍。您可以使用
.reserve()
保留容量。例如:内存的重新分配将发生在第 4、5 和 7 行。