Как удалить дубликаты из std :: vector <std :: pair <UnicodeString, UnicodeString>> - PullRequest
3 голосов
/ 22 марта 2011

как удалить дублирующиеся значения из

std::vector <std::pair<UnicodeString, UnicodeString> > myVect;

Есть ли встроенная функция или мне нужно написать собственный код для этого

Ответы [ 2 ]

6 голосов
/ 22 марта 2011

Предполагая, что (a) a std::set - это не то, что вам нужно [то есть вы хотите разрешить дублирование элементов в вашем std::vector, только чтобы удалить их позже] и (b) вы не хотите менятьпорядок элементов в вашем std::vector [то есть текущий порядок важен], что является разумной ситуацией ... Вы должны быть в состоянии адаптировать ответ Фреда Нурка к Как я могуудалить повторяющиеся значения из списка в C ++ купить, подставив vector вместо list и изменив компараторы less соответственно.

2 голосов
/ 22 марта 2011

Лучший способ сделать это, если вы можете изменить порядок в своем векторе, это:

   std::sort(myVect.begin(), myVect.end());
   myVect.erase(std::unique(myVect.begin(), myVect.end()), myVect.end());

Просто убедитесь, что UnicodeString принимает оператор <. </p>

Однако выможет потребоваться использовать другую структуру, такую ​​как std :: set или std :: unordered_set, чтобы иметь уникальную гарантию при вставке.

...