清空std :: vector而不改变其大小

ezd*_*ena 7 c++ vector

我想std::vector在for循环中重用一个.但是,对于for循环的每个迭代步骤,我需要向量为空.

问题:如何在不以最有效的方式改变其容量的情况下快速清空矢量?

到目前为止我用的是

std::vector<int> myVec;
for(int i=0; i<A_BIG_NUMBER; ++i) {
    std::vector<T>().swap(myVec);
    myVec.reserve(STANDARD_MAXIMUM);

    /// .. doing business
}
Run Code Online (Sandbox Code Playgroud)

干杯!

解:

感谢您的回答,以下是我实施(检查)它的方式:

#include <vector>
#include <iostream>

 int main() {

    int n = 10;
    std::vector< int > myVec;
    myVec.reserve(n);
    for(int j=0; j<3; ++j) {
            myVec.clear();
            for(int i=0; i<n; ++i) {
                    myVec.push_back(i);
            }
            for(int i=0; i<myVec.size(); ++i) {
                    std::cout << i << ": " << myVec[i] << std::endl;
            }
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:从变operator[]push_back.

Ash*_*sha 9

使用vector::clear方法.它将清除内容而不降低其容量.

  • 但它会*减小尺寸,使`myVec [i] = i;`非法. (3认同)

Moo*_*ice 5

myVec.clear();
Run Code Online (Sandbox Code Playgroud)

这相当于myVec.erase(myVec.begin(), myVec.end()).