uso una salida qué principales librería librerias lenguaje funciones entrada dev descargar crear clases bibliotecas c++ linux stl header-files c++-standard-library

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.