cpp 使用remove()删除vector<int>中的0
时间: 2024-03-03 08:50:59 浏览: 22
`remove()`函数是用于删除文件的,如果要删除`vector<int>`中的元素,需要使用STL算法库中的`remove()`算法。
`remove()`算法用于将指定值移动到容器的末尾,然后返回一个指向新的结束位置的迭代器。具体实现方式是将不等于指定值的元素移动到容器的前面,然后返回指向后面的第一个等于指定值的元素的迭代器。
对于删除`vector<int>`中的0,可以使用以下代码:
```c++
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {3, 0, 2, 0, 5};
// 使用remove()算法将0移动到容器末尾
auto it = std::remove(vec.begin(), vec.end(), 0);
// 删除容器末尾的0
vec.erase(it, vec.end());
return 0;
}
```
在上述代码中,`std::remove()`算法将`vector<int>`中的0移动到末尾,然后返回指向末尾第一个0的迭代器。接着使用`vector`的`erase()`函数删除末尾的0,最终得到的`vec`容器为{3, 2, 5}。
相关问题
在std::vector<std::vector<int>>删除某些std::vector<int>
在std::vector<std::vector<int>>中删除某些std::vector<int>可以使用erase-remove idiom的方法。这个方法结合了erase和remove两个函数,可以高效地删除指定的元素。
以下是删除某些std::vector<int>的步骤:
1. 使用std::remove_if函数结合lambda表达式来标记要删除的std::vector<int>。lambda表达式可以根据特定的条件来判断是否需要删除。
2. 使用std::erase函数将被标记为删除的std::vector<int>从std::vector<std::vector<int>>中移除。
下面是示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<std::vector<int>> vecOfVec = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};
// 删除满足条件的std::vector<int>
vecOfVec.erase(std::remove_if(vecOfVec.begin(), vecOfVec.end(), [](const std::vector<int>& vec) {
// 根据特定条件判断是否需要删除
return vec.size() == 3; // 删除长度为3的std::vector<int>
}), vecOfVec.end());
// 输出结果
for (const auto& vec : vecOfVec) {
for (const auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
```
输出结果:
```
4 5 6
7 8 9
```
cpp中vector<int>删除一个数0
要删除一个vector中的数,可以使用erase()函数,该函数的参数是一个迭代器,表示要删除的元素的位置。如果要删除的元素是一个数值,可以使用std::remove()函数将该元素移到vector的末尾,然后再使用erase()函数删除末尾的元素。
以下是删除vector<int>中的数值0的代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 0, 2, 0, 3, 0};
// 移除所有值为0的元素
vec.erase(std::remove(vec.begin(), vec.end(), 0), vec.end());
// 输出vector中的元素
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
1 2 3
```