不存在“标准”向量 - 标准定义了行为和接口(以及一些实现细节,例如连续存储),但代码是编译器编写者确定的问题。
您的编译器应该有自己的
<vector>
头文件,您是否在构建包含路径上检查过此文件?一旦发现,您还应该在各自的标头中看到其他 STL 容器。 Microsoft Visual C++ 的列表位于此处,其中包括一些专有的列表,因此请注意以下示例免责声明:
在 Visual C++ .NET 2003 中,成员
和<hash_map>
标题 文件不再位于 std 中 名称空间,而是已被移动 进入 stdext 命名空间。参见标准文本 命名空间以获取更多信息。<hash_set>
在我安装 Visual C++ Express 2010 时,它们位于此文件夹中:
c:\程序文件\微软视觉 Studio 10.0 c\include
不同的运行时有不同的实现。
但我想这就是你想要的,广泛使用的 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.h 和 https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_bvector.h
它使用MACRO使代码运行性能良好并适合各种情况,但使其难以阅读,祝你好运。
大多数(如果不是全部)
std::vector
源代码应包含在<vector>
标头本身中。
标准库容器都是类模板,因此它们的定义及其所有成员函数的定义都包含在各自的标头中。
请注意,任何容器都没有一个真正的实现;每个 C++ 标准库实现都可以自由地实现它认为合适的每个容器,只要它满足容器的要求。