37

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

4

6 に答える 6

43

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

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

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

于 2012-07-12T18:00:17.153 に答える
12

実行g++ -v -v -vすると、検索されたすべてのインクルード ディレクトリを含む多くのものが出力されます。vectorその一つにあります。

于 2012-07-12T18:02:23.353 に答える
2

私のDebian安定版システムvectorはここにあります:

/usr/include/c++/4.4/vector
于 2012-07-12T17:56:03.940 に答える
0

多くの IDE (NetBeans など) ではCtrl+Click、className を使用して定義に移動できます。

于 2012-07-12T17:54:48.107 に答える