删除std::vector成员
时间: 2023-07-20 14:28:43 浏览: 52
要删除std::vector中的成员,可以使用std::vector的erase()函数。erase()函数可以根据指定的位置或者范围删除vector中的元素。例如,如果要删除vector中的第3个元素,可以使用以下代码:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2); // 删除第3个元素
```
如果要删除一定范围内的元素,可以使用以下代码:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 1, vec.begin() + 3); // 删除第2个到第4个元素
```
需要注意的是,erase()函数会使vector中后面的元素向前移动,因此在使用erase()函数后,迭代器的指向可能会发生改变。
相关问题
遍历删除删除std::vector成员
在遍历std::vector时,如果想要删除其中的元素,可以使用std::vector的erase()函数。但是需要注意的是,使用erase()函数删除元素时,会使迭代器失效,因此需要使用正确的方法来遍历std::vector并删除其中的元素。
一种方法是使用while循环遍历,以及使用迭代器来删除元素。具体实现如下:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin();
while (it != vec.end()) {
if (*it == 3) {
it = vec.erase(it); // 删除元素并返回下一个元素的迭代器
} else {
++it; // 迭代器指向下一个元素
}
}
```
另一种方法是使用for循环倒序遍历std::vector,以及使用迭代器来删除元素。具体实现如下:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = vec.rbegin(); it != vec.rend(); ++it) {
if (*it == 3) {
vec.erase(std::next(it).base()); // 删除元素
}
}
```
这里使用了std::reverse_iterator来倒序遍历std::vector,std::next()函数返回的是迭代器的下一个元素的迭代器,std::next(it).base()返回的是迭代器的底层迭代器,即可用于erase()函数。
std::vector成员函数
C++标准库中的std::vector是一个动态数组,它可以在运行时动态地增加或减少其大小。下面是std::vector的一些常用成员函数:
1. push_back():在vector的末尾添加一个元素。
2. pop_back():删除vector的末尾元素。
3. size():返回vector中元素的数量。
4. empty():如果vector为空,则返回true,否则返回false。
5. clear():删除vector中的所有元素。
6. front():返回vector的第一个元素。
7. back():返回vector的最后一个元素。
8. insert():在vector的指定位置插入一个元素。
9. erase():从vector中删除指定位置的元素。
10. resize():改变vector的大小。
11. reserve():为vector分配内存空间。
这些成员函数可以帮助我们方便地操作vector,使得我们可以更加高效地使用动态数组。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)