如何在c ++中弹出多维向量中的整行

时间:2015-02-03 10:11:24

标签: c++ multidimensional-array vector

我无法从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.
    }

我需要一个向量的原因是,在后面的代码中,维度会发生变化。

提前谢谢你。

1 个答案:

答案 0 :(得分:2)

如果要从向量中删除项目,请调用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