std::vector的erase方法如何使用
时间: 2024-05-03 10:13:52 浏览: 19
std::vector的erase方法用于从向量中删除一个或多个元素。它有两种重载形式:
1. erase(iterator position):删除指定位置的元素。
2. erase(iterator first, iterator last):删除指定范围内的元素,包括first和last。
其中,iterator是指向vector中元素的迭代器,position表示要删除的元素的位置,first和last表示要删除的范围。
下面是使用示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除指定位置的元素
vec.erase(vec.begin() + 2); // 删除第3个元素,即3
// 删除指定范围内的元素
vec.erase(vec.begin(), vec.begin() + 2); // 删除前两个元素,即1和2
// 输出剩余的元素
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:4 5
相关问题
std::vector的erase用法
std::vector::erase是用于删除vector中的元素的函数。它有两种重载形式,一种是删除指定位置的元素,另一种是删除指定范围内的元素。具体用法如下:
1. 删除指定位置的元素
vector.erase(iterator pos);
其中pos为指向要删除元素的迭代器。
2. 删除指定范围内的元素
vector.erase(iterator first, iterator last);
其中first和last分别为指向要删除范围的起始和结束迭代器。
需要注意的是,使用erase函数删除元素后,原来在删除元素后面的元素会自动向前移动填补删除元素的空缺。此外,如果需要在删除元素后保持vector的容量不变,可以使用vector::swap技巧来达到目的。
std::vector使用方法
`std::vector` 是 C++ STL 中的一个容器,用于存储动态数组。它可以自动扩容和缩容,可以在数组的任何位置插入或删除元素。以下是使用 `std::vector` 的一些常见方法:
1. 创建向量
可以使用以下语法创建一个空向量:
```
std::vector<int> vec;
```
也可以使用以下语法创建一个具有初始大小和值的向量:
```
std::vector<int> vec(5, 0); // 创建大小为5的向量,并将每个元素初始化为0
```
2. 访问向量元素
可以使用下标运算符 `[]` 或 `at()` 方法访问向量中的元素。例如:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
int x = vec[2]; // x 等于 3
int y = vec.at(4); // y 等于 5
```
注意,使用 `at()` 方法访问不存在的元素会抛出 `std::out_of_range` 异常。
3. 向向量中添加元素
可以使用 `push_back()` 方法将元素添加到向量的末尾:
```
std::vector<int> vec = {1, 2, 3};
vec.push_back(4);
```
也可以使用 `insert()` 方法在向量的任意位置添加元素:
```
std::vector<int> vec = {1, 2, 3};
auto it = vec.begin() + 1;
vec.insert(it, 4);
```
注意,`insert()` 方法需要传入一个迭代器,指定插入的位置。
4. 从向量中删除元素
可以使用 `pop_back()` 方法从向量的末尾删除元素:
```
std::vector<int> vec = {1, 2, 3};
vec.pop_back();
```
也可以使用 `erase()` 方法从向量的任意位置删除元素:
```
std::vector<int> vec = {1, 2, 3};
auto it = vec.begin() + 1;
vec.erase(it);
```
注意,`erase()` 方法需要传入一个迭代器,指定删除的位置。
5. 获取向量大小和容量
可以使用 `size()` 方法获取向量中元素的数量:
```
std::vector<int> vec = {1, 2, 3};
int n = vec.size(); // n 等于 3
```
可以使用 `capacity()` 方法获取向量的容量:
```
std::vector<int> vec = {1, 2, 3};
int m = vec.capacity(); // m 大于等于 3
```
注意,向量的容量可能会大于元素的数量,因为它预留了一些额外的空间以便于扩容。