C ++标准库的标头在哪里?

问题描述 投票:20回答:5

我想知道我的文件系统在哪里找到了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内部发生的事情,但我不确定。

c++ linux stl header-files c++-standard-library
5个回答
30
投票

GCC通常在/usr/include/c++/<version>/中安装标准C ++头文件。您可以运行gcc -v以找出您已安装的版本。

至少在我的版本中,没有vector.h;公共标题只是vector(没有扩展名),大多数实现都在bits/stl_vector.h

这就是我的Ubuntu发行版的情况;您的发行可能不同。


10
投票

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


2
投票

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

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

1
投票

在“普通”ubuntu安装上,您必须安装

libstdc++-version-dev

获取头文件。

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


0
投票

在许多IDE(例如NetBeans)中,您可以使用Ctrl+Click到className来定义

© www.soinside.com 2019 - 2024. All rights reserved.