如何删除具有特定条件的向量中的所有元组?
Posted
技术标签:
【中文标题】如何删除具有特定条件的向量中的所有元组?【英文标题】:How to delete all tuples in a vector with a certain condition? 【发布时间】:2019-12-14 18:20:26 【问题描述】:我有一个包含 3 个元组的向量。我想删除第二个值为 4 的所有元组。这是我的代码:
int main()
tuple thing1 = make_tuple(1, 4, 2, 2);
tuple thing2 = make_tuple(2, 2, 2, 2);
tuple thing3 = make_tuple(3, 4, 2, 2);
vector<thing> things = thing1, thing2, thing3;
int index = 0;
for (vector<thing>::iterator it = things.begin(); it != things.end(); ++it)
if (get<1>(*it) == 4)
things.erase(things.begin()+index);
else
index++;
但是这段代码删除了所有这些。谁能帮帮我?非常感谢你:)
【问题讨论】:
***.com/questions/8628951/… 你可以使用erase remove idiom。 您同时拥有index
和it
,但在发生擦除时它们会不同步。
【参考方案1】:
答案来自std::vector removing elements which fulfill some conditions。使用remove_if
函数模板可以做到,
things.erase(std::remove_if(
things.begin(), things.end(),
[](const thing& x) -> bool
return get<1>(x) == 4; // put your condition here
), things.end());
在 C++ Shell 上查看 example。
【讨论】:
以上是关于如何删除具有特定条件的向量中的所有元组?的主要内容,如果未能解决你的问题,请参考以下文章