特定のC++ライブラリの実装環境をどのように表示できますか?C++ヘッダーの実際の実装を表示するにはどうすればよいですか?
たとえば、std::map
がどのように実装されているかを確認したいと思います。バランスの取れた木(赤黒の木)だとわかっていますが、実際の実装を見たいと思います。これは可能ですか?
特定のC++ライブラリの実装環境をどのように表示できますか?C++ヘッダーの実際の実装を表示するにはどうすればよいですか?
たとえば、std::map
がどのように実装されているかを確認したいと思います。バランスの取れた木(赤黒の木)だとわかっていますが、実際の実装を見たいと思います。これは可能ですか?
ソースが必要です。 glibc(または他のオープンソースライブラリ)のものについては、利用可能でなければなりません。
std::map<>
の実装の詳細がそのライブラリのユーザーに表示される必要はありません。 「C++の実装」あなたは
#include <map>
std::map<int, int> map;
を書くとき、コードがコンパイルされ、実行されるように、それは便利見つけたものは何でも行うことができます。
一部の実装では、それは確かに「便利」であることがわかりマップ呼ばファイルに
namespace std
{
template<typename Key, typename T,
typename Compare = std::less<Key>,
typename Allocator = std::allocator<std::pair<const Key, T>>>
class map { /* ... */ };
}
のようになります。コードを配置します。このような実装を使用している場合は、ディスク上のファイルをどこかで見つけることができます。 (そしてそのようなファイルが存在する可能性があるからといって、その内容で自由に何でも自由にできることを必ずしも意味するわけではありません。)
libC++とlibstdC++はどちらもオープンソースです。 – NathanOliver
@FrançoisAndrieux:コンパイラは、システムヘッダのファイル**を '
@ Jarod42私はそれに遭遇したことはありませんでした。 –