我正在使用如下代码:
const int MY_SIZE = 100000;
std::vector<double> v;
v.reserve(MY_SIZE);
// add no more than MY_SIZE elements to the vector
f(v);
v.clear();
// again, add no more than MY_SIZE elements to the vector
f(v);
v.clear();
//
// etc...
//
我的代码的重点是存储MY_SIZE
double
's 然后f(std::vector<double>)
对这些元素执行操作。在我填满向量并执行操作后,我想摆脱所有元素(并重置std::vector::size()
为 0),然后添加更多元素。但是,这里的关键是我不想改变分配给向量的内存空间。
请注意,我永远不会向 中添加多个MY_SIZE
元素v
,因此v
永远不需要重新分配比v.reserve(MY_SIZE)
.
那么,当我调用v.clear()
上面的代码时,它会以任何方式影响分配的空间量v.reserve(MY_SIZE)
或内存中的位置v.begin()
吗?
相关问题:如果我打电话v.erase(v.begin(),v.begin()+v.size())
,它会以任何方式影响分配的空间量v.reserve(MY_SIZE)
或内存中的位置v.begin()
吗?
如果我真的只是想擦除所有元素,我会调用clear()
. 但是我想知道这个相关问题,因为有时我只需要擦除 的前 X 个元素v
,并且在这些情况下,我想保留分配的内存v.reserve(MY_SIZE)
并且我不希望v
更改 的位置。