在不破坏元素的情况下调整std :: vector的大小

Jav*_*i V 3 c++ vector c++11

我一直在使用相同的std::vector<int>,以便尽量避免分配deallocating.在几行中,我的代码如下:

std::vector<int> myVector;
myVector.reserve(4);

for (int i = 0; i < 100; ++i) {
    fillVector(myVector);
    //use of myVector
    //....
    myVector.resize(0);
}
Run Code Online (Sandbox Code Playgroud)

在每次迭代中,myVector最多将填充4个元素.为了制作高效的代码,我想永远使用myVector.但是,在被摧毁myVector.resize()的元素中myVector.我明白这myVector.clear()会产生同样的效果.

我想如果我可以覆盖现有的元素,myVector我可以节省一些时间.但是我认为std::vector不能做到这一点.

有没有办法做到这一点?创建一个覆盖元素的本土实现是否有意义?

Jar*_*d42 5

您的代码已经有效(myVector.clear()比有更好的样式myVector.resize(0)).

'int destructor'什么都不做.
所以resize(0)只需设置size为0,capacity不变.