Istnieje wiele answers z std::vector
, ale co z std::unordered_set
?Czy clear() wpływa na liczbę pakietów std :: unordered_set?
Moje prawdziwe pytanie (blisko związane) jest to; czy efektywne jest ponowne użycie tego samego nieuporządkowanego zestawu przez wyczyszczenie go przed każdym użyciem, jeśli wcześniej zarezerwuję to, co wiem, że jest rozsądnym rozmiarem?
Powiedziałbym, że będzie to specyficzne dla implementacji. Standard określa tylko, że 'clear()' usuwa wszystkie elementy w kontenerze. –
Myślę, że [ten sam argument stosuje się do 'std :: vector :: reserve'] (http://stackoverflow.com/a/18467916):' bucket_count' jest częścią obserwowalnego stanu; można go zmienić przy wstawianiu, ale nie można go jawnie zmieniać na 'rehash' lub' reserve' (lub nawet na 'erase', o ile widzę ..). – dyp
@dyp: zgubiłeś mnie ... "' bucket_count' ... nie można jawnie zmieniać na 'rehash' lub' reserve' "- te ostatnie istnieją, aby zezwolić na liczbę segmentów (stąd' bucket_count() ') do modyfikacji - pierwszy bezpośrednio akceptuje nową liczbę segmentów (ale podlega kontroli "size()/max_load_factor()'), a ta ostatnia czerpie ją z wielu przewidywanych elementów i bieżącego "max_load_factor". "wyraźne" czy nie, to właśnie robią. –