web-dev-qa-db-de.com

Wo sind die Header der C++ - Standardbibliothek

Ich frage mich, wo ich in meinem Dateisystem die Header der C++ - Standardbibliothek finde. Insbesondere suche ich nach der Definition der Vektorvorlage. Ich habe in/usr/include/und verschiedenen Unterverzeichnissen gesucht. Ich habe auch 'locate vector.h' ausprobiert, was viele Implementierungen von Vektoren brachte, aber nicht die Standardvariante. Was vermisse ich? (Die Verteilung ist Gentoo)

Hintergrund: Ich habe ein Profil für eine Bibliothek erstellt, die die meiste Zeit über vector läuft, und gprof zeigt, dass die meiste Zeit in verbracht wird 

std::vector<int, std::allocator<int> >::_M_insert_aux(
  __gnu_cxx::__normal_iterator<int*, std::vector<
      int, std::allocator<int> > >, int const&)

Wahrscheinlich passiert dies intern auf einem std :: vector :: Push_back, aber ich bin mir nicht sicher.

17
Thomas

In GCC sind normalerweise die Standard-C++ - Header in /usr/include/c++/<version>/ installiert. Sie können gcc -v ausführen, um herauszufinden, welche Version Sie installiert haben.

Zumindest in meiner Version gibt es keinen vector.h; Der öffentliche Header ist nur vector (ohne Erweiterung) und der Großteil der Implementierung befindet sich in bits/stl_vector.h.

Das ist bei meiner Ubuntu-Distribution der Fall. Ihre Verteilung kann abweichen.

28
Mike Seymour

Beim Ausführen von g++ -v -v -v werden viele Dinge ausgegeben, einschließlich aller durchsuchten Include-Verzeichnisse. vector ist in einer davon.

10

Auf meinem Debian Stable-System ist vector hier:

/usr/include/c++/4.4/vector
2
genpfault

Auf einer "einfachen" Ubuntu-Installation müssen Sie installieren 

libstdc++- version -dev 

um die Header-Dateien zu erhalten.

wenn Sie dann die installierten Dateien suchen, erhalten Sie den Pfad!

1
jo_

In vielen IDE (z. B. NetBeans) können Sie Ctrl+Click in className verwenden, um zur Definition zu gelangen

0
RiaD