Was ist die Leistung der STL bitset :: count () -Methode?

8

Ich habe gesucht und konnte die Leistungszeitspezifikationen für bitset :: count () nicht finden. Weiß jemand, was es ist (O (n) oder besser) und wo man es findet?

BEARBEITEN Mit STL beziehe ich mich nur auf die Standardvorlagenbibliothek.

    
yasouser 14.01.2011, 17:03
quelle

4 Antworten

7

Ich habe diese Datei (C: \ cygwin \ lib \ gcc \ i686-pc-cygwin \ 3.4.4 \ include \ c ++ \ bitset) auf meinem Computer gelesen.
Siehe diese

%Vor%

BTW, hier ist _Nw angegeben:

%Vor%

Also ist es O (n) in der gcc-Implementierung. Wir schließen daraus, dass die Spezifikation es nicht besser als O (n) erfordert. Und niemand, der in seiner rechten Meinung ist, wird es schlimmer umsetzen. Wir können dann sicher annehmen, dass es im schlimmsten Fall O (n) ist. Vielleicht besser, aber darauf können Sie sich nie verlassen.

    
Haozhun 14.01.2011, 17:14
quelle
1

Ich kann nicht sicher sein, was Sie wirklich mit "STL" hier meinen, aufgrund eines vorherrschenden Missbrauchs des Begriffs in der C ++ - Community.

  • Der C ++ Standard (2003) macht kein Mandat für die Leistung von std::bitset::count() (oder, soweit ich das sehen kann, Mitglieder von std::bitset ).

  • Ich kann keinen Hinweis finden, der ein Mandat für die Leistung von STLs bitset::count() vorschlägt.

Ich denke, jede vernünftige Implementierung wird dies in konstanter (oder im schlimmsten Fall linearer) Zeit bereitstellen. Dies ist jedoch nur ein Gefühl. Überprüfen Sie Ihre, um herauszufinden, was Sie tatsächlich bekommen.

    
quelle
0
  

"Die Referenzimplementierung von SGI läuft   in linearer Zeit in Bezug auf die   Anzahl der Bytes zum Speichern der   Bits. Es tut dies, indem Sie ein erstellen   Statisches Array von 256 ganzen Zahlen. Das   Wert gespeichert bei i-ten Index im Array   ist die Anzahl der Bits, die im Wert festgelegt sind   ich. "

Ссылка

    
Aphex 14.01.2011 17:08
quelle
0

Ich bin nicht sicher, ob Sie eine Spezifikation dafür finden werden, da die STL normalerweise kein bestimmtes Leistungsniveau erfordert. Ich habe Hinweise gesehen, dass es "schnell" ist, etwa 1 Zyklus pro Bit in der Größe des Sets. Sie können natürlich den Code Ihrer speziellen Implementierung lesen, um herauszufinden, was Sie erwarten können.

    
unwind 14.01.2011 17:09
quelle

Tags und Links