如何在C++的二维向量中删除列

3
如果我有一个向量,里面有一个向量创建了一个矩阵,那么我该如何删除该矩阵中的特定列。我已经填充了2D向量,现在需要一种方法来在该向量中删除特定列。
例如,我的向量看起来像这样:
vector<vector<float> > vec;

仅供参考,我知道如何删除向量中的行,如下所示:

vec.erase(vec.begin()+row);

//那么,如何在二维向量中删除一个特定的列的算法或代码是什么?

例如,如果我有以下向量:

V11, V12, V13
V21, V22, V23
V31, V32, V33

我想删除特定的列,例如第一列,这将会删除V12、V22、V32,并缩小表格如下:

V11, V13
V21, V23
V31, V33

感谢您查看这个问题。
1个回答

7

您需要循环遍历所有行,并删除每行中该列中的元素。

int columnIndex = 1;
std::for_each(vec.begin(), vec.end(), 
    [&](std::vector<float>& row) {
        row.erase(std::next(row.begin(), columnIndex));
    });

Live demo


2
或者基于范围的for循环:for(auto& row:vec) row.erase(next(row.begin(), columnIndex)); - Chris Drew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接