我想知道我的文件系统在哪里找到了C ++标准库的标题。特别是我正在寻找矢量模板的定义。我在/ usr / include /和各个子目录中搜索。我也试过'locate 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内部发生的事情,但我不确定。
GCC通常在/usr/include/c++/<version>/
中安装标准C ++头文件。您可以运行gcc -v
以找出您已安装的版本。
至少在我的版本中,没有vector.h
;公共标题只是vector
(没有扩展名),大多数实现都在bits/stl_vector.h
。
这就是我的Ubuntu发行版的情况;您的发行可能不同。
运行g++ -v -v -v
输出很多东西,包括搜索的所有包含目录。 vector
就是其中之一。
在我的Debian稳定系统上vector
在这里:
/usr/include/c++/4.4/vector
在“普通”ubuntu安装上,您必须安装
libstdc++-
version-dev
获取头文件。
然后检查已安装的文件,你会得到路径!
在许多IDE(例如NetBeans)中,您可以使用Ctrl+Click
到className来定义