Как удалить повторяющиеся векторы в многомерном векторе? - PullRequest
3 голосов
/ 25 марта 2010

У меня есть вектор векторов:

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 Ответ

6 голосов
/ 25 марта 2010

Почему бы не использовать уникальный? Я думаю, что если у вас проблемы с тем, чтобы заставить его работать, это потому, что использование std::unique требует сортировки диапазона. Итак, что-то вроде

std::vector<std::vector<int>> myVec;
std::sort(myVec.begin(), myVec.end());
myVec.erase(std::unique(myVec.begin(), myVec.end()), myVec.end());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...