私のファイルシステムのどこに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
はそれらのいずれかにあります。
「プレーン」ubuntuインストールでは、インストールする必要があります
libstdc++-
バージョン-dev
ヘッダーファイルを取得します。
その後、インストールされたファイルをチェックして、パスを取得します!
多くのIDE(NetBeansなど)では、Ctrl+Click
to className to definition