Вам, вероятно, стоит взглянуть на stl::set
, что вам нужно. A stl::bitset
является еще одним вариантом.
Это будет зависеть от того, как вам нужно использовать информацию, которая определит, какой из них лучше. A set
- это отсортированная структура данных, время вставки, поиска и удаления занимает O (LOG N). Но если вам нужно перебрать по всем значениям, которые вы пометили как "существование", тогда set
- путь.
Если вам нужно только отметить и найти факт , что что-то является членом набора, тогда bitset
может быть лучше для вас. Для вставки, поиска и удаления требуется только O (1), но вы можете собирать только int
значений. Итерирование по всем отмеченным значениям потребует O (N), так как вам нужно пройти весь набор, чтобы найти элементы, которые установлены в true
. Вы можете использовать его совместно с stl :: map для сопоставления значений, которые у вас есть, с числовыми значениями, необходимыми bitset
.
Посмотрите на операции, которые вам нужно выполнить со значениями в вашем наборе, и вы сможете выбрать соответствующую структуру данных