如何在 C++ 中 pop_back 多维向量中的整行

How do I pop_back an entire row in Mutlidimensional Vector in c++

我在用 C++ 从我的多维向量中删除整行时遇到问题。我想存储 N 个 L 维唯一向量。我试过这样做:

 vector< vector<int > > my_vec;
 for(i=0;i<N;i++){
    my_vec.push_back(vector<int>());

    for(j=0;j<L;j++){
        t =(int)(distribution(engine)*Tr); //JUST A RANDOM NUMBER GENERATOR
        traits[i].push_back(t);
        }

    if ( array unique ){
        ALL GOOD !
        }
    else{ my_vec[i].pop_back();i--;} // THIS IS GIVING ME PROBLEMS.
    }

我需要向量的原因是在后面的代码中尺寸会改变。

提前谢谢你。

如果你想从向量中删除一个项目,调用 vector::erase 方法,并给它一个指向要删除的项目的迭代器。如果要擦除的项目是另一个向量并不重要。

这是一个小样本。

#include <iostream>
#include <vector>
using namespace std;

typedef vector<vector<int>> VecInt2D;

void erase_a_row(VecInt2D& v, size_t where)
{
    if ( !(where >= 0 && where < v.size()))
       return;
    v.erase(v.begin() + where);
}

int main() {
    VecInt2D myVect(10);
    cout << myVect.size() << "\n";
    // erase the last item
    erase_a_row(myVect, myVect.size() - 1);
    cout << myVect.size() << "\n";
    return 0;
}

实时样本:http://ideone.com/xvDpjT