vector查找并删除特定元素位置
时间: 2023-09-25 22:13:32 浏览: 97
你可以先使用`std::find()`函数查找vector中特定元素的位置,然后使用`std::vector::erase()`函数删除该元素。以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = std::find(vec.begin(), vec.end(), 3); // 查找元素3的位置
if (it != vec.end()) { // 判断是否找到了元素
vec.erase(it); // 删除元素
}
for (auto& num : vec) { // 遍历vector输出剩余元素
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
上述代码中,`std::find()`函数查找元素3的位置,如果找到了该元素,就使用`std::vector::erase()`函数删除该元素。最后遍历vector,输出剩余元素。
相关问题
vector查找并删除特定元素位置,不用auto
可以使用迭代器来实现查找并删除特定元素的位置,具体过程如下:
```c++
std::vector<int> vec = {1, 2, 3, 4, 5, 6};
int target = 3;
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ) {
if (*it == target) {
it = vec.erase(it);
} else {
++it;
}
}
```
在上面的代码中,我们首先定义了一个 vector 容器,并初始化了一些元素。然后,我们定义了一个整型变量 target,表示要查找并删除的目标元素。接下来,我们使用 for 循环来遍历 vector 容器中的元素,使用迭代器 it 来指向当前元素。
在循环过程中,如果当前元素等于目标元素,就使用 vector 的 erase() 方法来删除当前元素,并将迭代器 it 指向下一个元素。否则,就将迭代器 it 指向下一个元素。
最后,循环结束后,我们就可以得到一个不包含目标元素的新 vector 容器。需要注意的是,当使用 erase() 方法删除一个元素后,迭代器 it 会失效,因此需要重新赋值为下一个元素的迭代器。
vector查找特定元素位置
你可以使用C++ STL中的`std::find()`函数来查找vector中特定元素的位置。该函数接受两个迭代器作为参数,第一个迭代器指向vector的起始位置,第二个迭代器指向vector的结束位置,第三个参数是要查找的特定元素。如果找到了该元素,则返回该元素的迭代器,否则返回结束迭代器。可以通过计算迭代器之间的距离来得到元素的位置。以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = std::find(vec.begin(), vec.end(), 3); // 查找元素3的位置
if (it != vec.end()) { // 判断是否找到了元素
std::cout << "元素3的位置为:" << std::distance(vec.begin(), it) << std::endl; // 输出元素位置
} else {
std::cout << "未找到元素3" << std::endl;
}
return 0;
}
```
阅读全文