如何删除具有特定条件的向量中的所有元组?

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。 您同时拥有indexit,但在发生擦除时它们会不同步。 【参考方案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。

【讨论】:

以上是关于如何删除具有特定条件的向量中的所有元组?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 x 没有。具有特定条件的从顶部开始的行数

如何删除excel中符合特定条件的所有行,以及随后的行

如何删除具有特定名称 spritekit 的所有节点

如何删除具有特定前缀的所有 MySQL 数据库?

如何根据元组的索引值从列表中删除重复的元组,同时保持元组的顺序? [复制]

自动删除文件/文件夹