删除vector C ++中的所有元素

时间:2012-11-30 06:38:22

标签: c++ vector erase

  

可能重复:
  Delete all items from a c++ std::vector

我认为在迭代器中使用begin会弄乱它,因为它只迭代26次并跳过每2个元素。我怎么能这样做?

void clearVector() {
    for (int i = 0; i < 52; i++) {
        vector.erase(vector.begin() + i);
    }
}

4 个答案:

答案 0 :(得分:15)

您调用std::vector::clear()方法:

myVector.clear();

我已将实例名称从vector更改为myVector。为实例使用类的名称不是一个好主意。

答案 1 :(得分:10)

std::vectorclear成员,您知道:

void clearVector() {
    vector.clear();
}

无论如何,既然你从左边擦除,那么尺寸也会缩小。这可以按照你想要的方式工作,虽然效率很低,因为每次迭代都需要在前面做O(N)个副本。

void clearVector() {
    for (int i = 0; i < 52; i++) {
        vector.erase(vector.begin());
    }
}

答案 2 :(得分:3)

你可以使用std :: vector :: clear()来清除元素,或者用空容器交换要快得多。

vec.clear(); 

std::vector<DataType>().swap(vec);

注意:您的变量vector不是好的变量名称,最好将其更改为其他名称。

答案 3 :(得分:2)

      vec.erase(vec.begin() /* first you want delete */, 
                vec.begin() + vec.size() /* 1 beyond the last you want to delete */);
      // or if you have to erase all elements:
      vec.clear();

所以你不需要迭代。