如果我有
vector<T> list
列表中的每个元素都是唯一的,如果我不知道它是否在列表中,那么删除元素的最简单方法是什么?我不知道元素的索引,也不关心它是否不在列表中。
原文由 JimR 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果我有
vector<T> list
列表中的每个元素都是唯一的,如果我不知道它是否在列表中,那么删除元素的最简单方法是什么?我不知道元素的索引,也不关心它是否不在列表中。
原文由 JimR 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果出现是唯一的,那么您应该使用 std::set<T>
,而不是 std::vector<T>
。
这具有 erase
成员函数的额外好处,它可以满足您的需求。
看看为工作使用正确的容器如何为您提供更具表现力的工具?
#include <set>
#include <iostream>
int main()
{
std::set<int> notAList{1,2,3,4,5};
for (auto el : notAList)
std::cout << el << ' ';
std::cout << '\n';
notAList.erase(4);
for (auto el : notAList)
std::cout << el << ' ';
std::cout << '\n';
}
// 1 2 3 4 5
// 1 2 3 5
原文由 Lightness Races in Orbit 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
您可以 对 std::vector 使用 Erase-remove 成语
引用:
或者,如果您确定它是唯一的,只需遍历向量并擦除找到的元素。就像是: