如何删除2d向量中的列,c ++

Dee*_*apa 3 c++ c++11

如果我在矢量中创建了一个矩阵,我该如何删除该矩阵中的特定列.我已经填充了2d向量现在我需要一种方法来删除该向量中的特定列,

例如我的矢量看起来像:

vector<vector<float> > vec;
Run Code Online (Sandbox Code Playgroud)

只是为了知识,我知道如何擦除向量中的行,如下所示:

vec.erase(vec.begin()+row);
Run Code Online (Sandbox Code Playgroud)

// so什么是删除向量向量中特定列的算法或代码

例如,如果我有

V11, V12, V13
V21, V22, V23
V31, V32, V33
Run Code Online (Sandbox Code Playgroud)

然后我想删除第1列的特定列,它将擦除V12,V22,V32并缩小如下:

V11, V13
V21, V23
V31, V33
Run Code Online (Sandbox Code Playgroud)

感谢您查看此问题.

Pra*_*ian 6

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

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

现场演示

  • 或基于范围的 for 循环:`for(auto&amp; row:vec) row.erase(next(row.begin(), columnIndex));` (2认同)