Die Fallstricke der Größe in stl

高洛峰
Freigeben: 2016-11-22 15:12:39
Original
1468 Leute haben es durchsucht

Als ich letztes Jahr zum ersten Mal in das Unternehmen eintrat, gab es LRUCache in der Basisbibliothek des Unternehmens und seine Implementierung verwendete std::list. Aber die Funktion, die std::list berechnet, verwendet direkt die size()-Methode in stl. Dadurch blieb die Leistung während des Stresstests hier hängen.
Heute hat ein Kollege eine weitere Warteschlangenimplementierung in der Basisbibliothek gefunden, die ebenfalls std::list verwendet. Die size()-Methode wurde auch beim Abrufen der Anzahl der Elemente verwendet.
Leider stellt die Basisbibliothek des Unternehmens nur Header-Dateien bereit, und es ist unmöglich, einzeln zu überprüfen, ob diese Grube an anderen Stellen vorhanden ist.

Werfen wir einen Blick auf die Implementierung der size()-Methode in stl:

size_type    
  size() const
      { return std::distance(begin(), end()); }
Nach dem Login kopieren

Die obige Code-G-Version ist 4.2.1

Offensichtlich die Komplexität ist O(N ). Wenn die Liste viele Elemente enthält, ist die Berechnung sehr langsam. Daher müssen Sie bei der Verwendung von std::list daran denken, selbst eine Zählung zu führen.


Verwandte Etiketten:
stl
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage