2012-07-12 71 views
10

我在想我的文件系统上的哪个位置找到C++标准库的标题。特别是我正在寻找矢量模板的定义。我在/ usr/include /和各种子目录中搜索。我也尝试过'定位vector.h',它引入了很多矢量实现,但不是标准的。我错过了什么? (该发行版是Gentoo)C++标准库的标题在哪里

背景:我剖析库,在矢量的大部分时间和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上,但我不确定。

+2

为什么要在*** C ***中搜索'vector'包含? – genpfault 2012-07-12 17:55:04

回答

19

GCC通常安装在标准C++头/usr/include/c++/<version>/。您可以运行gcc -v以查明您安装了哪个版本。

至少在我的版本中,没有vector.h;公众头部只是vector(没有扩展名),大部分实现在bits/stl_vector.h

我的Ubuntu发行版就是这种情况;您的分布可能有所不同

+1

谢谢,失踪.h重要提示。在Gentoo上它位于/usr/lib64/gcc/x86_64-pc-linux-gnu/4.5.3/include/g++-v4/vector – Thomas 2012-07-12 18:01:54

0

在许多IDE(如NetBeans的),你可以使用Ctrl+Click来的className去定义

1

在我的Debian系统稳定vector是在这里:

/usr/include/c++/4.4/vector 
+0

它是vector.h吗?哪个软件包提供它? GCC? – Thomas 2012-07-12 17:59:33

8

运行g++ -v -v -v输出很多东西,包括所有搜索的包含目录。 vector是其中之一。

1

在一个 “普通” 安装Ubuntu,你必须安装

“的libstdC++(版本)-dev”

得到的头文件。

然后检查安装的文件,你会得到的路径!