我从http://www.sgi.com/tech/stl/download.html下载了STL源代码,但它只有函数声明的.h.我在哪里可以下载.cpp文件来阅读实际的实现?
例如,在stl_multimap.h或stl_map.h中,它具有:
template <class _Key, class _Tp, class _Compare, class _Alloc>
inline void swap(multimap<_Key,_Tp,_Compare,_Alloc>& __x,
multimap<_Key,_Tp,_Compare,_Alloc>& __y) {
__x.swap(__y);
}
Run Code Online (Sandbox Code Playgroud)
我想知道交换的实际实现
__x.swap(__y);
Run Code Online (Sandbox Code Playgroud)
我没有看到swap的实际代码在哪里.在这里,它只是自称.
.h 文件包含实现。该页面上的许多标题只是其他标题的包装器或提供 typedef,但是如果您查看类似 的文件stl_set.h,您将看到它具有set该类的所有函数定义。
甚至页面本身也声明它是一个仅标头的库,这意味着实现包含在标头中。
C++库的实现因不同的编译器/系统而异.如果您使用GCC/G ++作为编译器,可以从http://gcc.gnu.org/libstdc++/下载源代码.
或者你可以在这里匿名检查源代码:svn checkout svn://gcc.gnu.org/svn/gcc/trunk/libstdc++v3 libstdc ++