C++“向量”的源代码在哪里? [已关闭]

问题描述 投票:0回答:4

我正在尝试获取向量源代码以了解标准 std 或 STL 向量是如何实现的。

这是出于学习目的。我在哪里可以找到源代码? 甚至其他 C++ 容器的源代码也会有帮助。

c++ stl std
4个回答
16
投票

不存在“标准”向量 - 标准定义了行为和接口(以及一些实现细节,例如连续存储),但代码是编译器编写者确定的问题。

您的编译器应该有自己的

<vector>
头文件,您是否在构建包含路径上检查过此文件?一旦发现,您还应该在各自的标头中看到其他 STL 容器。 Microsoft Visual C++ 的列表位于此处,其中包括一些专有的列表,因此请注意以下示例免责声明:

在 Visual C++ .NET 2003 中,成员

<hash_map>
<hash_set>
标题 文件不再位于 std 中 名称空间,而是已被移动 进入 stdext 命名空间。参见标准文本 命名空间以获取更多信息。

在我安装 Visual C++ Express 2010 时,它们位于此文件夹中:

c:\程序文件\微软视觉 Studio 10.0 c\include


6
投票

不同的运行时有不同的实现。

但我想这就是你想要的,广泛使用的 gcc 实现: https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/vector

是主要的头文件,实现在 https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_vector.hhttps://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_bvector.h

它使用MACRO使代码运行性能良好并适合各种情况,但使其难以阅读,祝你好运。


3
投票

大多数(如果不是全部)

std::vector
源代码应包含在
<vector>
标头本身中。

标准库容器都是类模板,因此它们的定义及其所有成员函数的定义都包含在各自的标头中。

请注意,任何容器都没有一个真正的实现;每个 C++ 标准库实现都可以自由地实现它认为合适的每个容器,只要它满足容器的要求。


2
投票
© www.soinside.com 2019 - 2024. All rights reserved.