如何有效减少 std::vector 的容量
如果您发现自己的 std::vector 容量过剩,您可能想知道是否有办法缩小它的大小以释放内存。虽然没有直接的方法,但有一种聪明的技术,称为“交换技巧”。
交换技巧
根据 Scott Meyers 的《有效》第 17 条STL,您可以使用交换技巧来修剪向量的多余容量。它的工作原理如下:
<code class="cpp">vector<Person>(persons).swap(persons);</code>
执行此交换后,名为“persons”的向量将“收缩以适应”,这意味着其容量将减少以匹配其包含的元素数量。
该技巧如何工作
此技巧利用了向量的复制构造函数仅为要复制的元素分配必要的内存量这一事实。通过创建一个与原始向量具有相同数量元素的新向量,复制构造函数会创建一个容量更小的新向量。
然后,swap 方法会交换原始向量和新向量的内容和容量。结果,原始向量的容量减少了。
以上是如何减少 std::vector 中的过剩容量:交换技巧解释的详细内容。更多信息请关注PHP中文网其他相关文章!