今天突然想看下vector的erase实现,但是找了好久都没找到一个明确的下载方式。侯捷的个人网站也无法访问,只能在搜索引擎里各种查找。最终找到了下载方法,竟然如此简单,分享出来节约大家的时间。

下载gcc的源码:https://github/gcc-mirror/gcc,STL的实现就在libstdc++-v3目录里。

这里还要注意一点,如果有的函数你在工程里找不到实现,比如_M_erase,可能是没有把实现该函数的文件加到工程里,因为实现该函数的文件扩展名既不是 也不是.cpp,而是.tcc ,比如vector调用的_M_erase是在vector.tcc里实现的:

  template<typename _Alloc>
    typename vector<bool, _Alloc>::iterator
    vector<bool, _Alloc>::
    _M_erase(iterator __position)
    {
      if (__position + 1 != end())
        std::copy(__position + 1, end(), __position);
      --this->_M_impl._M_finish;
      return __position;
    }

接下来就可以阅读STL的源码了。

更多推荐

哪里下载C++ STL的源码