Я ищу набор контейнеров в C ++.Я хочу что-то, где я мог бы добавить элементы, но они не будут повторяться более одного раза, и поиск в этой коллекции будет O (1).Что является текущим дефакто-кросс-компиляторомЯ видел некоторые в boost (например, mpl), и они есть в будущих стандартах c ++, но что лучше использовать сейчас и здесь?
РЕДАКТИРОВАТЬ
Пример сохранения вектора в контейнере boost :: unordered_set.Так что для меня это, кажется, вполне соответствует моим потребностям, но у меня будет много данных, поэтому, если кто-то сразу увидит потенциальную ошибку, вы можете прокомментировать, что может пойти не так.Опять же, все элементы будут иметь отсортированный вектор без указателей.
vector<string> values1;
values1.push_back("aaa");
values1.push_back("bbb");
values1.push_back("ccc");
vector<string> values2;
values2.push_back("aa");
values2.push_back("bbb");
values2.push_back("ccc");
vector<string> values3;
values3.push_back("aaa");
values3.push_back("bbb");
vector<string> values4;
values4.push_back("aaa");
values4.push_back("bbb");
values4.push_back("ccc");
values4.push_back("ddd");
vector<string> values5;
values5.push_back("aaa");
values5.push_back("bbb");
values5.push_back("ccc");
vector<string> values6;
values6.push_back("aaa");
values6.push_back("bbb");
values6.push_back("ccc");
values6.push_back("ddd");
boost::unordered_set<vector<string> > collection;
collection.insert(values1); // 1
cout << collection.size() << endl;
collection.insert(values2); // 2
cout << collection.size() << endl;
collection.insert(values3); // 3
cout << collection.size() << endl;
collection.insert(values4); // 4
cout << collection.size() << endl;
collection.insert(values5); // 4
cout << collection.size() << endl;
collection.insert(values6); // 4
cout << collection.size() << endl;