c++ - una - uso de bibliotecas de funciones entrada y salida
¿Dónde están los encabezados de la biblioteca estándar de C++? (5)
Me pregunto dónde encontraré los encabezados de la biblioteca estándar de C ++ en mi sistema de archivos. En particular estoy buscando la definición de la plantilla de vector. Busqué en / usr / include / y varios subdirectorios. También intenté ''localizar vector.h'' que trajo muchas implementaciones de vectores, pero no la estándar. ¿Qué me estoy perdiendo? (La distribución es Gentoo)
Antecedentes: estoy perfilando una biblioteca que itera sobre vectores la mayor parte del tiempo y gprof muestra que la mayoría del tiempo se pasa en
std::vector<int, std::allocator<int> >::_M_insert_aux(
__gnu_cxx::__normal_iterator<int*, std::vector<
int, std::allocator<int> > >, int const&)
Probablemente esto es lo que sucede internamente en un std :: vector :: push_back, pero no estoy seguro.
En mi sistema Debian Stable el vector
está aquí:
/usr/include/c++/4.4/vector
En muchos IDE (por ejemplo, NetBeans) puede usar Ctrl+Click
para nombrar a className para ir a la definición
En una instalación de Ubuntu "simple" tienes que instalar
libstdc++-
version -dev
para obtener los archivos de cabecera.
Luego, revisando los archivos instalados obtendrás la ruta.
GCC normalmente tiene los encabezados estándar de C ++ instalados en /usr/include/c++/<version>/
. Puede ejecutar gcc -v
para averiguar qué versión ha instalado.
Al menos en mi versión, no hay vector.h
; el encabezado público es solo vector
(sin extensión), y la mayor parte de la implementación está en bits/stl_vector.h
.
Ese es el caso de mi distribución de Ubuntu; Su distribución puede diferir.
La ejecución de g++ -v -v -v
genera muchas cosas, incluidos todos los directorios de inclusión buscados. vector
está en uno de esos.