如何删除多维向量中的重复向量?

时间:2010-03-25 03:54:11

标签: c++ vector duplicates multidimensional-array

我有一个向量载体:

vector< vector<int> > BigVec;

它包含任意数量的向量,每个向量都是任意大小。我想删除不是每个向量的重复元素,而是删除任何与另一个完全相同的向量。我不需要保留向量的顺序,所以我可以排序等等。

要解决这个问题应该是一个非常简单的问题,但我是新手,我的(不工作)最好的努力:

for (int i = 0; i < BigVec.size(); i++)
  {
     for (int j = 1; j < BigVec.size() ; j++ )
        {
             if (BigVec[i][0] == BigVec [j][i]);
             {
                BigVec.erase(BigVec.begin() + j);
                i = 0;       // because i get the impression deleting a 
                j = 1;       // vector messes up a simple iteration through
             }
        }
  }

我认为可能有一个使用Unique()的解决方案,但我也无法使用它。

1 个答案:

答案 0 :(得分:6)

为什么不使用独特的?我认为如果你在使用它时遇到问题,那是因为使用std::unique要求对范围进行排序。所以,像

std::vector<std::vector<int>> myVec;
std::sort(myVec.begin(), myVec.end());
myVec.erase(std::unique(myVec.begin(), myVec.end()), myVec.end());