c++ - gnu gcc 站点上的标准 C++ 库 header

标签 c++ gcc stl gnu

我想浏览 C++ 标准库的 gnu 实现的源代码——头文件和实现。 我已经陷入:

http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html

我的第一步是查看头文件:

http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/a01376.html

我的问题是,根据我的理解,typedeffed 字符串类似于: typedef basic_string 字符串; 应该出现在字符串 header 中,但我在这里没有看到。

问题: -- 字符串符号的定义在哪个文件中? -- 我看到字符串头文件包含很多头文件,如果在这些内部头文件之一中定义了 typedeffed sring 符号,那么这个站点上是否有搜索栏,我可以通过它直接找到符号的定义。 (以防有人之前已经浏览过该站点的内容)

谢谢, 贾格拉蒂

最佳答案

许多 libstdc++ 仅使用 header 实现,但 STL 的某些部分(如 std::basic_string)已编译实现。

模板std::basic_string的声明位于/usr/include/c++/4.4.4/bits/basic_string.h(替换'4.4.4 ' with g++ -dumpversion) 并且实现在 /usr/include/c++/4.4.4/bits/basic_string.tcc 中。 std::stringstd::wstring 等的实际 typedef.../bits/stringfwd 中。 h.例如,如果您需要使用其他模板参数实例化 std::basic_string,那么您可以执行以下操作:

#include <bits/basic_string.tcc>

template class std::basic_string<long>;

libstdc++ 实现集合和映射(仅 header )的方式很有趣,但也非常复杂,因为它使用自定义红黑树实现 (_Rb_tree)。

std::vector 的 libstdc++ 实现(也是仅 header )更加独立,因此值得一看 /usr/include/c++/4.4.4/bits/STL_vector.h 让您了解 libstdc++ 的内部结构。另一个有趣的文件是 .../bits/STL_algo.h,其中包含 STL 算法的定义。

注意:在装有 MinGW 的 Windows 上,您会在 MinGW 的 lib\gcc\mingw32\4.4.0\include\c++\bits 中找到 libstdc++ header 安装,将“4.4.0”替换为 g++ -dumpversion

关于c++ - gnu gcc 站点上的标准 C++ 库 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3171535/

相关文章:

java - jni undefined symbol 错误

c - 在代码块窗口上使用 gcc 扩展

c++ - 如何获取列表中的倒数第二个元素?

c++ - 正确实现删除 vector 元素

c++ - 为什么 ~= 是 C++ 中唯一缺少的非逻辑赋值运算符?

c++ - 如何让 QLineEdit 跟随光标显示它的坐标

c++ - C++中的动态类创建

c++ - C++错误: expected ',' or ';' before '{' token when their is

c++ - 安装 RPM 时对 libstdc++(GLIBCXX_...) 的依赖失败

c++ - multimap 值中的随机访问,还是我应该只使用 vector 图