如何从vector中删除元素
时间: 2024-05-06 20:14:58 浏览: 127
你可以使用 vector 的 erase() 函数来删除 vector 中的元素。erase() 函数可以接受一个迭代器作为参数,该迭代器指向要删除的元素。以下是一个示例代码:
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 创建一个 vector
vector<int> vec = {1, 2, 3, 4, 5};
// 删除第三个元素
vec.erase(vec.begin() + 2);
// 打印 vector 中的元素
for (auto i : vec) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
在上面的代码中,我们使用 erase() 函数删除了 vector 中的第三个元素(即值为 3 的元素)。输出结果为:
```
1 2 4 5
```
注意,erase() 函数会将被删除元素后面的所有元素向前移动一个位置,因此删除元素后,vector 的大小会减小。如果你要删除多个元素,你可以在循环中多次调用 erase() 函数,但是要注意,每次调用 erase() 函数都会改变 vector 的大小和迭代器的位置,因此你需要谨慎处理迭代器的位置。
相关问题
c++的vector中删除元素
要从C++的标准库vector中删除元素,你可以使用erase函数。以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除第三个元素
vec.erase(vec.begin() + 2);
// 打印剩余的元素
for (const auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个示例中,我们使用`erase`函数删除了vector中的第三个元素。注意,vector的索引是从0开始的,所以`vec.begin() + 2`表示第三个元素的迭代器。运行这段代码将输出:`1 2 4 5`,即删除了数字3。
你可以根据需要修改代码适应不同的情况。希望能帮到你!如果还有其他问题,请继续提问。
std::vector 遍历出指定元素后从 vector 中删除该元素
在 C++ 中,可以使用 std::vector 的 erase() 函数来删除 vector 中的元素,配合迭代器可以删除指定元素。
例如,我们要遍历 vector,找到值为 3 的元素并删除:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = vec.begin(); it != vec.end(); ++it) {
if (*it == 3) {
vec.erase(it);
break;
}
}
```
上述代码中,我们使用迭代器遍历 vector 中的元素,当找到值为 3 的元素时,使用 erase() 函数删除该元素,并使用 break 跳出循环。
需要注意的是,使用 erase() 函数删除元素后,原来的迭代器会失效,因此要在 erase() 函数之前先保存该元素的迭代器,以便后续使用。
如果要删除 vector 中所有值为 3 的元素,可以使用 std::remove() 函数结合 erase() 函数:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5, 3};
vec.erase(std::remove(vec.begin(), vec.end(), 3), vec.end());
```
上述代码中,我们使用 std::remove() 函数将所有值为 3 的元素移动到 vector 的末尾,并返回移动后的新的“逻辑”结尾迭代器,然后使用 erase() 函数删除新的“逻辑”结尾迭代器之后的所有元素。
阅读全文