如何从以给定值开头的向量中移除元素
How to remove an element from a vector who starts with given value
给定一个字符串向量和一个字符串,删除字符串以给定字符串开头的向量的每个元素最简单的方法是什么?
例如,假设vector<string> ToProcess
已填充,并且您希望删除以"string done="123xyz"开头的每个元素?只有一场比赛。
因为你说只有一个匹配,所以使用STL实际上有点棘手。您需要使用std::find_if
来定位要删除的一个值,然后用矢量中的最后一个值覆盖该值,然后再使用pop_back()
,而不是使用std::remove_if
。完成这一切需要额外的几行代码,但会为您提供最佳性能,否则您将无法获得最佳性能(因为remove_if
在找到一行代码后不会停止,而其他一些方法会尝试从中间擦除,这需要向下移动向量的后半部分)。
要使用find_if
,必须首先实现一个对字符串执行"startswitch"的谓词,如下所示:
struct StartsWith
{
StartsWith(string prefix) : _prefix(prefix) {}
bool operator()(const string& value) { /*...*/ }
private:
string _prefix;
};
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 在 C++ 中输出枚举类类型的向量元素
- 用向量的向量元素初始化向量的空向量
- 为什么不允许使用可变长度数组作为向量元素?
- 在函数中传递向量元素
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- 返回向量元素的 l 值的正确方法是什么?
- 当向量增长时,指向向量元素的C++指针是否无效
- 如何在C++中从一个向量元素减去std::unorderede_map向量元素并更新它
- C++:向量元素赋值导致访问冲突
- 将向量元素与字符串元素进行比较,而不初始化向量
- 从2D矢量中找出最小尺寸的向量元素的更好方法
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- 使用递归C++向量元素的总和
- 如何查找为数组中的最低值编制索引的向量元素
- 限制指针访问STL ::向量元素
- 访问索引指向向量元素时的seg故障 - 做错了什么
- 如何使用指针访问向量元素的各个元素
- 向量元素数据损坏了Find()操作
- 将字符值分配给向量元素.C