vector+erase用法
时间: 2024-01-25 16:13:03 浏览: 166
在C++的vector中,erase函数用于删除vector中的元素。下面是使用erase函数的示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除指定位置的元素
vec.erase(vec.begin() + 2); // 删除索引为2的元素,即3
// 删除指定范围的元素
vec.erase(vec.begin(), vec.begin() + 2); // 删除索引为0和1的元素,即1和2
// 删除最后一个元素
vec.pop_back();
// 输出剩余的元素
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:4 5,表示删除元素后剩余的元素。
注意事项:
- erase函数接受一个迭代器作为参数,用于指定要删除的元素的位置或范围。
- 如果要删除单个元素,可以直接传递要删除元素的迭代器。
- 如果要删除一段范围内的元素,可以传递要删除范围的起始和结束迭代器。
- erase函数会返回一个指向被删除元素之后的元素的迭代器。
- erase函数会改变vector的大小,因此在使用erase函数后,需要注意迭代器的有效性。
相关问题
vector+c+++用法
在 C++ 中,我们可以使用 vector 来创建动态数组,它提供了很多方便的方法来操作数组元素,例如:
1. 创建 vector 对象:
```c++
#include <vector>
using namespace std;
vector<int> nums; // 创建一个空的整数数组
```
2. 添加元素到 vector:
```c++
nums.push_back(1); // 添加整数 1 到数组末尾
nums.push_back(2); // 添加整数 2 到数组末尾
nums.push_back(3); // 添加整数 3 到数组末尾
```
3. 获取 vector 中元素的个数:
```c++
int size = nums.size(); // 获取数组元素个数
```
4. 获取 vector 中指定位置的元素:
```c++
int element = nums[0]; // 获取数组第一个元素
int element2 = nums.at(1); // 获取数组第二个元素
```
5. 修改 vector 中指定位置的元素:
```c++
nums[0] = 4; // 修改数组第一个元素为 4
nums.at(1) = 5; // 修改数组第二个元素为 5
```
6. 删除 vector 中指定位置的元素:
```c++
nums.erase(nums.begin() + 1); // 删除数组第二个元素
```
7. 遍历 vector 中的所有元素:
```c++
for (int i = 0; i < nums.size(); i++) {
cout << nums[i] << " "; // 输出数组元素
}
```
以上是 vector 的基本用法,还有很多其他的方法可以使用,例如排序、查找、插入等等。需要根据具体的场景进行使用。
vector.erase用法
`std::vector::erase`是C++标准库中的一个方法,用于从vector中删除指定的元素。其基本用法如下:
```cpp
std::vector<int>::iterator erase(const_iterator position);
```
或者
```cpp
void erase(const_iterator first, const_iterator last);
```
第一个版本删除一个元素,第二个版本删除一个范围。这些方法都返回一个指向被删除元素之后的元素的迭代器。注意,对于指向元素开始和结束的迭代器,通常定义为常量(即它们是不可变的),这就是为什么这里使用了`const_iterator`的原因。
下面是`erase`的用法和实例:
1. **删除一个元素**:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2); // 删除索引为2的元素(即3)
```
2. **删除一个范围的元素**:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2, vec.begin() + 4); // 删除索引为2和3的元素(即3和4)
```
请注意,被删除的元素会被移动到vector的末尾,所以它们的索引不会改变。也就是说,如果一个元素被删除,它原来的位置将会是下一个元素的空位。因此,如果你需要保留这些被删除元素的引用或指针,那么你需要在删除它们之前保存这些引用或指针。
此外,你还可以使用`std::vector::clear`方法来清除vector中的所有元素,但是这不会改变vector的大小。
希望这个回答对你有所帮助!如果你有任何其他问题,欢迎继续提问。
阅读全文