std::vector删除元素
时间: 2023-10-17 12:36:17 浏览: 381
要删除std::vector中的元素,你可以使用erase()函数。erase()函数有两个版本:一个是接受一个位置参数(迭代器),另一个是接受两个位置参数(迭代器范围)。
如果你知道要删除的元素的索引,可以使用迭代器来删除该元素。例如,如果要删除向量v中的第三个元素,可以使用以下代码:
v.erase(v.begin() + 2);
这里,v.begin()返回一个指向向量v的第一个元素的迭代器,而+2表示在此基础上向前移动两个位置。erase()函数将删除该位置上的元素。
如果你知道要删除的元素的值,但不知道其索引,可以使用std::remove()函数和erase()函数组合来删除。例如,如果要从向量v中删除值为x的所有元素,可以使用以下代码:
v.erase(std::remove(v.begin(), v.end(), x), v.end());
remove()函数将所有值为x的元素移动到向量的末尾,并返回指向新的结尾位置的迭代器。然后,erase()函数将从新结尾位置到向量的末尾删除所有元素。
请注意,这些操作都会改变向量的大小,并且后续元素的索引会相应地改变。确保在进行这些操作之前,你已经了解了std::vector和迭代器的基本概念。
相关问题
std::vector 删除元素
可以使用以下方法从 std::vector 中删除元素:
1. 使用 erase() 函数:该函数接受一个迭代器参数,表示要删除的元素的位置。例如,要删除索引为 i 的元素,可以使用以下代码:
```
v.erase(v.begin() + i);
```
2. 使用 pop_back() 函数:该函数删除 vector 的最后一个元素。例如:
```
v.pop_back();
```
3. 使用 remove() 函数:该函数接受一个值作为参数,并从 vector 中删除所有等于该值的元素。例如,要删除所有等于 x 的元素,可以使用以下代码:
```
v.erase(std::remove(v.begin(), v.end(), x), v.end());
```
注意:使用 erase() 或 pop_back() 函数删除元素时,vector 的大小会相应减小,且后续元素的位置会发生变化。因此,在使用迭代器遍历 vector 时,应避免在循环中使用 erase() 或 pop_back() 函数删除元素,而应使用 remove() 函数。
std::vector 删除元素样例代码
std::vector 是C++ STL中非常常用的容器,可以动态存储元素并提供许多方便的操作。要删除 std::vector 中的元素,可以使用 erase() 函数。下面是一个简单的示例代码:
```
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec{1, 2, 3, 4, 5};
// 删除第三个元素
vec.erase(vec.begin() + 2);
for (auto i : vec) {
std::cout << i << " ";
}
return 0;
}
```
这个例子中,我们首先定义了一个包含整数的 std::vector,并初始化了一些元素。然后,我们使用 erase() 函数删除了第三个元素(下标为2),最后输出剩余的元素。
相关推荐
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)