相关疑难解决方法(0)

向量分配是否使"储备"无效?

假设我写

std::vector<T> littleVector(1);
std::vector<T> bigVector;

bigVector.reserve(100);
bigVector = littleVector;
Run Code Online (Sandbox Code Playgroud)

标准是否bigVector仍然会保留100个元素?或者,如果我要使用push_back99个元素,我是否会体验内存重新分配?也许它甚至在STL实现之间有所不同.

这在此之前已经讨论过,但没有给出标准参考.

c++ language-lawyer

35
推荐指数
3
解决办法
1370
查看次数

当新大小小于当前大小时,std :: vector :: resize()是否会重新分配?

可能重复:
std :: vector向下调整大小

如果我resize()std::vector尺寸小于其当前尺寸,那么矢量是否可能会分配新内存?

出于性能原因,这对我很重要.

c++ std c++11 c++03 c++98

15
推荐指数
2
解决办法
6020
查看次数

std :: vector <T> :: pop_back的形式规范

我正在查看C++标准(草案n3797),我找不到任何pop_back适用的文档std::vector,仅供参考std::list.它真的不见了吗?

具体来说,我一直在寻找pop_back不会改变容量的保证.还是有这样的保证?(我希望迭代器和对其他元素的引用仍然有效,但我找不到保证,并且它不会限制删除最后一个元素的情况,无论如何)

c++ language-lawyer

7
推荐指数
1
解决办法
291
查看次数

调整大小()到较小的大小会丢弃先前的reserve()所做的预留吗?

因此,如果我首先保留(100),添加一些元素,然后调整大小(0)(或小于当前大小的任何其他数字),向量是否会将内存重新分配给比100个元素少的空间?

c++ containers vector std

6
推荐指数
1
解决办法
1649
查看次数

标签 统计

c++ ×4

language-lawyer ×2

std ×2

c++03 ×1

c++11 ×1

c++98 ×1

containers ×1

vector ×1