vector中移除第一元素
时间: 2023-09-25 07:13:18 浏览: 50
可以使用 vector 的成员函数 `erase()` 来移除指定位置的元素,例如移除第一个元素可以这样写:
```c++
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3};
vec.erase(vec.begin()); // 移除第一个元素
for (auto x : vec) {
std::cout << x << " "; // 输出 2 3
}
std::cout << std::endl;
return 0;
}
```
这里通过 `vec.begin()` 获取第一个元素的迭代器,作为 `erase()` 函数的参数,实现了移除第一个元素的功能。
相关问题
std::vector 如何移除元素
std::vector 是C++ STL中的一个非常常用的容器,它可以动态地增加或减少元素。在移除元素方面,std::vector 提供了多种方法,其中比较常用的是使用 erase() 函数。erase() 函数可以接受一个迭代器作为参数,该迭代器指向要删除元素的位置。以下是示例代码:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2;
vec.erase(it); // 移除第3个元素(值为3)
```
上述代码中,首先创建一个包含整数元素的 std::vector 对象,并初始化为 {1, 2, 3, 4, 5}。然后使用迭代器访问第3个元素(即值为3的元素),并将该迭代器传递给 erase() 函数。这样就会删除该元素。最终的结果是 vec 变为 {1, 2, 4, 5}。
需要注意的是,erase() 函数会返回一个新的迭代器,该迭代器指向被删除元素的下一个元素。因此,在使用 erase() 函数时,需要谨慎处理迭代器的位置,以避免出现迭代器失效的情况。
std::vector 移除多个元素
可以使用 `std::remove_if` 和 `std::vector::erase` 来移除多个元素。
例如,如果我们有一个 `std::vector<int>`,想要移除所有小于 5 的元素,可以这样做:
```cpp
std::vector<int> vec = {1, 6, 2, 7, 3, 8, 4, 9, 5};
vec.erase(std::remove_if(vec.begin(), vec.end(), [](int i){ return i < 5; }), vec.end());
```
`std::remove_if` 会将满足条件的元素移到 vector 的末尾,并返回一个指向第一个被移动的元素的迭代器。然后,我们可以在 `std::vector::erase` 中使用这个迭代器和 vector 的 `end` 迭代器来移除这些元素。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)