Если вы хотите сохранить список уникальных strings
, то проще всего использовать правильный инструмент для работы;а именно set<string>
, а не массив string
.
Редактировать:
Если вам не нужно сортировать коллекцию строк (как это делает set
),и он у вас есть, было бы целесообразнее использовать unordered_set
, а не set
.set
будет просто выполнять ненужную сортировку каждый раз, когда вы добавляете строку.
Edit2:
A set
является ассоциативным массивом, что означает, что может быть только один элемент с данным ключом,В случае set<string>
ключ - это string
, который вы вставляете.Если вы вставляете один и тот же ключ несколько раз, в set
.
все равно будет только один его экземпляр. Вот пример программы, иллюстрирующей это.Если вы запустите это, вы обнаружите, что вывод - это всего лишь один «foo», хотя «foo» был вставлен 3 раза:
#include <set>
#include <string>
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
set<string> my_strings;
my_strings.insert("foo");
my_strings.insert("foo");
my_strings.insert("foo");
copy( my_strings.begin(), my_strings.end(), ostream_iterator<string>(cout, "\n"));
}