web-dev-qa-db-ja.com

C ++標準ライブラリのヘッダーはどこにありますか

私のファイルシステムのどこに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で内部的に発生することですが、私にはわかりません。

21
Thomas

通常、GCCには/usr/include/c++/<version>/にインストールされた標準C++ヘッダーがあります。 gcc -vを実行して、インストールしたバージョンを確認できます。

少なくとも私のバージョンでは、vector.hはありません。パブリックヘッダーはvector(拡張子なし)であり、ほとんどの実装はbits/stl_vector.hにあります。

それは私のUbuntuディストリビューションの場合です。ディストリビューションは異なる場合があります。

31
Mike Seymour

ランニング g++ -v -v -vは、検索されたすべてのインクルードディレクトリを含む多くのものを出力します。 vectorはそれらのいずれかにあります。

10

「プレーン」ubuntuインストールでは、インストールする必要があります

libstdc++-バージョン-dev

ヘッダーファイルを取得します。

その後、インストールされたファイルをチェックして、パスを取得します!

1
jo_

多くのIDE(NetBeansなど)では、Ctrl+Click to className to definition

0
RiaD