📅  最后修改于: 2023-12-03 14:50:20.364000             🧑  作者: Mango
在C++中,可以使用vector
容器类来存储一组元素,并且可以通过使用索引来删除向量中的特定元素。下面将介绍几种删除特定向量元素的方法。
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int element = 3;
// 使用erase-remove习惯用法删除特定元素
vec.erase(std::remove(vec.begin(), vec.end(), element), vec.end());
// 打印修改后的向量
for (const auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在上面的代码中,使用了erase-remove
习惯用法来删除特定的元素。首先使用std::remove
函数将要删除的元素移动到向量的末尾,然后使用erase
函数删除末尾的元素。
输出结果为:1 2 4 5
,已成功删除元素3。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int element = 3;
// 使用循环删除特定元素
for (auto it = vec.begin(); it != vec.end(); ) {
if (*it == element) {
it = vec.erase(it);
} else {
++it;
}
}
// 打印修改后的向量
for (const auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在上面的代码中,使用循环来遍历向量并删除特定的元素。如果找到要删除的元素,则调用erase
函数删除,否则继续迭代。
输出结果与上述方法一相同:1 2 4 5
。
#include <iostream>
#include <vector>
#include <algorithm>
bool isToRemove(int num) {
return num == 3;
}
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用remove_if删除特定元素
vec.erase(std::remove_if(vec.begin(), vec.end(), isToRemove), vec.end());
// 打印修改后的向量
for (const auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在上面的代码中,使用remove_if
函数结合一个自定义的谓词函数isToRemove
来删除特定的元素。谓词函数返回true
表示需要删除元素。
输出结果与上述方法一和方法二相同:1 2 4 5
。
以上是在C++中删除特定向量元素的几种常见方法。根据具体的需求和习惯,你可以选择合适的方法来删除特定的元素。