Есть много answers с std::vector
, но как насчет std::unordered_set
?Does clear() влияет на количество ведра std :: unordered_set?
Мой настоящий вопрос (тесно связанный) - это; эффективно ли использовать один и тот же неупорядоченный набор, очищая его перед каждым использованием, если я забронирую то, что я знаю, для разумного размера заранее?
Я бы сказал, что это будет конкретная реализация. В стандарте указывается, что 'clear()' стирает все элементы в контейнере. –
Я думаю, что [тот же аргумент применяется как для 'std :: vector :: reserve'] (http://stackoverflow.com/a/18467916):' bucket_count' является частью наблюдаемого состояния; это разрешено изменять при вставке, но явно не разрешено изменять «rehash» или «reserve» (или даже «стирать», насколько я вижу). – dyp
@dyp: вы потеряли меня ... «bucket_count» ... явно не разрешено изменять «rehash» или «reserve» - последние существуют, чтобы разрешить количество bucket (таким образом, 'bucket_count()'), который должен быть изменен - первый непосредственно принимает новое количество ковшей (но подлежит проверке 'size()/max_load_factor()' sity), а последний выводит его из числа ожидаемых элементов и текущего 'max_load_factor'. «явно» или нет, это то, что они делают. –