Какой контейнер STL использовать, если я хочу, чтобы он игнорировал дублирующиеся элементы? - PullRequest
4 голосов
/ 15 декабря 2009

Я ищу какой-нибудь контейнер STL (но не boost), который после следующих операций будет содержать 2 элемента: "abc" и "xyz":

std::XContainer<string> string_XContainer;
string_XContainer.push_back("abc");
string_XContainer.push_back("abc");
string_XContainer.push_back("xyz");

Кстати, он мне нужен только для того, чтобы в конце вызвать string_XContainer.size(), чтобы получить общее количество уникальных строк. Так что, может быть, мне даже не нужен контейнер, и есть более элегантный способ сделать это?

1 Ответ

18 голосов
/ 15 декабря 2009

std::set - это то, что вам нужно. Набор будет содержать не более одного экземпляра каждого элемента по сравнению с определенной вами функцией сравнения.

Это был бы один из подходов для получения количества уникальных строк. Из вашего примера строки были уже в отсортированном порядке? Если это так, то вы можете просто создать массив (или другую простую структуру) и использовать алгоритм std::unique.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...