问题描述
有没有办法查看用于在 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)); }