Где находятся заголовки стандартной библиотеки С++
Интересно, где в моей файловой системе я нахожу заголовки библиотеки С++ Standard. В частности, я ищу определение векторного шаблона. Я искал в/usr/include/и различных подкаталогах. Я также попытался "найти vector.h", который вызвал множество реализаций векторов, но не стандартный. Что мне не хватает? (Распределение Gentoo)
Фон: я профилирую библиотеку, которая выполняет большую часть времени итерации по вектору, и gprof показывает, что большую часть времени тратится на
std::vector<int, std::allocator<int> >::_M_insert_aux(
__gnu_cxx::__normal_iterator<int*, std::vector<
int, std::allocator<int> > >, int const&)
Возможно, это то, что происходит внутри на std::vector:: push_back, но я не уверен.
Ответы
Ответ 1
GCC обычно имеет стандартные заголовки С++, установленные в /usr/include/c++/<version>/
. Вы можете запустить gcc -v
, чтобы узнать, какую версию вы установили.
По крайней мере, в моей версии нет vector.h
; общий заголовок - это просто vector
(без расширения), и большая часть реализации находится в bits/stl_vector.h
.
Что касается моего дистрибутива Ubuntu; ваше распределение может отличаться.
Ответ 2
Запуск g++ -v -v -v
выводит множество вещей, включая все каталоги включенных каталогов. vector
находится в одном из них.
Ответ 3
В моей системе Debian Stable vector
находится здесь:
/usr/include/c++/4.4/vector
Ответ 4
В "простой" установке ubuntu вам нужно установить
"libstdС++ (версия) -dev"
чтобы получить файлы заголовков.
а затем набрав установленные файлы, вы получите путь!
Ответ 5
Во многих IDE (например, NetBeans) вы можете использовать Ctrl+Click
для className, чтобы перейти к определению