如何在C++中看到不同数据结构的实际实现代码?

问题描述

有没有办法查看用于在 C++ 中实现不同数据结构(如列表、向量、unorderd_map、map、set)的实际代码

我很想看看这些实现的效率有多高。

而且我很惊讶谷歌在这方面没有合理的结果。

谢谢。

解决方法

C++ 标准有不同的实现,其中一些是开源的。例如,gcc 的实现称为 libstdc++。例如,std::vector<T> 的源代码可以在这里查阅:https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a01115_source.html

您可以在文件中看到的一个有趣的例子是 std::vector<T>::push_back() 只是调用了 std::vector<T>::emplace_back()

00370       template<typename _Up = _Tp>
00371         typename __gnu_cxx::__enable_if<!std::__are_same<_Up,bool>::__value,00372                     void>::__type
00373         push_back(_Tp&& __x)
00374     { emplace_back(std::move(__x)); }