2012-07-12 66 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」

得到的頭文件。

然後檢查安裝的文件,你會得到的路徑!