Es gibt viele answers mit std::vector
, aber was ist mit std::unordered_set
?Beeinflusst clear() die Bucket-Anzahl von std :: unordered_set?
Meine eigentliche Frage (eng verwandt) ist dies; Ist es effizient, den gleichen ungeordneten Satz wiederzuverwenden, indem ich ihn vor jedem Gebrauch lösche, wenn ich vorher reserviere, was ich für eine vernünftige Größe halte?
Ich würde sagen, das wäre implementierungsspezifisch. Der Standard gibt nur an, dass 'clear()' alle Elemente im Container löscht. –
Ich denke das [gleiche Argument gilt wie für 'std :: vector :: reserve'] (http://stackoverflow.com/a/18467916):' bucket_count' ist Teil des beobachtbaren Zustandes; es ist erlaubt, beim Einfügen geändert zu werden, aber es ist nicht explizit erlaubt, auf 'rehash' oder' reserve' zu ändern (oder sogar auf 'löschen', soweit ich das sehen kann). – dyp
@dyp: du hast mich verloren ... "' bucket_count' ... nicht explizit erlaubt auf 'rehash' oder' reserve' zu ändern - die letzteren existieren, um die Anzahl der Buckets zu erlauben (also 'bucket_count()')) modifiziert werden - das erste akzeptiert direkt eine neue Anzahl von Buckets (unterliegt jedoch einer 'size()/max_load_factor()' Plausibilitätsprüfung) und letzterer leitet es aus einer Anzahl erwarteter Elemente und dem aktuellen 'max_load_factor' ab. "Explizit" oder nicht, das tun sie. –