Je me demande où se trouvent les en-têtes de la bibliothèque C++ Standard dans mon système de fichiers. En particulier, je recherche la définition du modèle vectoriel. J'ai cherché dans/usr/include/et divers sous-répertoires. J'ai aussi essayé 'localiser vector.h' qui a évoqué de nombreuses implémentations de vecteurs, mais pas celle standard. Qu'est-ce que je rate? (La distribution est Gentoo)
Arrière-plan: Je suis en train de profiler une bibliothèque qui parcourt la plupart du temps des vecteurs et gprof montre que la plupart du temps est consacré à
std::vector<int, std::allocator<int> >::_M_insert_aux(
__gnu_cxx::__normal_iterator<int*, std::vector<
int, std::allocator<int> > >, int const&)
C'est probablement ce qui se passe en interne sur un std :: vector :: Push_back, mais je ne suis pas sûr.
GCC a généralement les en-têtes C++ standard installés dans /usr/include/c++/<version>/
. Vous pouvez exécuter gcc -v
pour savoir quelle version vous avez installée.
Au moins dans ma version, il n'y a pas vector.h
; l'en-tête public est juste vector
(sans extension), et la plupart de l'implémentation est en bits/stl_vector.h
.
C'est le cas sur ma distribution Ubuntu. votre distribution peut différer.
Exécuter g++ -v -v -v
génère beaucoup de choses, y compris tous les répertoires d'inclusion recherchés. vector
est dans l'un de ceux-ci.
Sur mon système Debian Stable, vector
est ici:
/usr/include/c++/4.4/vector
Sur une installation "ordinaire" d'ubuntu, vous devez installer
libstdc++-
version -dev
pour obtenir les fichiers d'en-tête.
puis en vérifiant les fichiers installés, vous aurez le chemin!
Dans de nombreux IDE (par exemple, NetBeans), vous pouvez utiliser Ctrl+Click
to className pour accéder à la définition.