了解vector容器
一、迭代器
在遍历容器时删除元素会导致迭代器失效,这是因为删除元素时改变了容器内元素的位置,从而让迭代器指向的元素位置不再有效。
如果要在遍历时删除元素,可以使用 erase 函数,erase 函数会返回指向被删除元素的下一个元素的迭代器,因此不会使迭代器失效。
1
2
3
4
5
6
7
8
9
10
11
12
13
int main() {
std::vector<int> n{1,2,3,4,5};
for (auto it = n.begin(); it != n.end();) {
if (*it % 2 == 0) {
it = n.erase(it)
} else {
++it;
}
}
}
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment