Я нашел эту статью полезной по теме. http://lafstern.org/matt/col1.pdf
Вы можете пересмотреть свои требования только для «списка» против «набора». Согласно этой статье, если ваша программа состоит в основном из набора вставок в начале, а затем после этого, только сравнения с тем, что вы сохранили, тогда вам лучше добавить все в вектор, используя std :: sort ( vector.begin (), vector.end ()) один раз, а затем с использованием lower_bound. В моем конкретном приложении я загружаю из текстового файла список имен при запуске программы, а затем во время выполнения программы я определяю, есть ли пользователь в этом списке. Если они есть, я что-то делаю, иначе я ничего не делаю. Другими словами, у меня была одна отдельная фаза вставки, затем я отсортировал, затем после этого я использовал std :: binary_search (vector.begin (), vector.end (), std :: string username), чтобы определить, является ли пользователь в списке.