查找并删除向量的第二维中的值?

时间:2014-04-05 17:40:37

标签: c++ vector

这是一个2dim向量

vector< vector<int>> path2;

我填写如下:

path2[0][6 0 1 5 6]  
 path2[1][6 2 4 3 6]

我想知道如何通过第二维(我的意思是6,0,1,5,6和6,2,4,3,6)找到并删除此向量中的值?(我有检查主题,我知道如何为1dim向量做,但在这种情况下我没有找到任何东西)

提前谢谢

2 个答案:

答案 0 :(得分:0)

一种简单的解决方法,可以删除找到的第一个值:

for (auto &row : path2)
{
    auto itr = find(row.begin(), row.end(), x);
    if (itr != row.end())
        row.erase(itr);
}

删除所有找到的值:

for (auto &row : path2)
{
    for (auto it = row.begin(); it != row.end();)
    {
        if (*it == x)
            it = row.erase(it);
        else
            ++it;
    }
}

答案 1 :(得分:0)

使用类似的东西:

std::vector<int> target ={{6, 2, 4, 3, 6} } ;
path2.erase(std::remove(path2.begin(), 
                        path2.end(), 
                        target
                       ),
             path2.end()
            );

参考: