我认为在迭代器中使用 begin 会搞砸这个,因为它只迭代 26 次并跳过每 2 个元素。我还能怎么做?
void clearVector() {
for (int i = 0; i < 52; i++) {
vector.erase(vector.begin() + i);
}
}
我认为在迭代器中使用 begin 会搞砸这个,因为它只迭代 26 次并跳过每 2 个元素。我还能怎么做?
void clearVector() {
for (int i = 0; i < 52; i++) {
vector.erase(vector.begin() + i);
}
}
std::vector
有一个clear
成员,你知道:
void clearVector() {
vector.clear();
}
无论如何,由于您从左侧擦除,因此大小也会缩小。这可以按照您的意愿工作,尽管它效率低下,因为每次迭代都必须在前面进行 O(N) 次复制。
void clearVector() {
for (int i = 0; i < 52; i++) {
vector.erase(vector.begin());
}
}
您可以使用 std::vector::clear() 清除元素或与空容器交换更快。
vec.clear();
或者
std::vector<DataType>().swap(vec);
注意:您的变量vector
不是好的变量名,最好将其更改为其他名称。
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();
所以你不需要迭代。