【C++标准库-体系结构与内核分析】STL源码到底在哪里可以看到?

C++ STL底层实现 STL以及底层实现学习记录 阅读详情

0.说明

    首先要说明,不同的平台对STL的实现存在细节上的不同,但他们都遵循者一个共同的标准,所以说今天给出
STL在Windows下和在Linux下各自的实现源码.

1.VC

VC版本可以在VS中的VC中看到,我这里给出的版本是VS2015中的VC的目录.VC的分布相对于G++/GCC还是比较清晰的.

VS中的VC

头文件:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
STL源码:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt\src\stl

2.G++/GCC

1.老师说
侯捷老师强烈推荐2.9.1版本源码阅读,侯老师也会说4.9的版本也会讲解,4.9中会有重大不同.
Dev-Cpp_5.11_TDM-GCC_4.9.2_Setup.exe是侯老师推荐的编译器,其内嵌的版本就是GNU4.9.2.
GNUC的STL源码就可以在
D:\002-软件包安装目录\011-VC4-9-2\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\bits
D:\002-软件包安装目录\011-VC4-9-2\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\ext(ext表示extension)
这两个目录中找到,这两个目录是安装Dev-Cpp_5.11_TDM-GCC_4.9.2_Setup.exe的时候得到的.



2.其他方法看GNU中GCC中G++中的STL
http://ftp.gnu.org/pub/gnu/gcc/是可以下载到这些G++(在2版的后续版本中已经不单独存在)和GCC编译器的各个版本的地方,
此网站还提供其他很多资源.
如:我们下载
http://ftp.gnu.org/pub/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz到我们的电脑上,解压之后,可以看到
我们的STL的源码就在:
D:\005-代码\001-开源项目源码\010-编译器\gcc-4.9.2.tar\gcc-4.9.2\libstdc++-v3\src中(这个是我的电脑里面的绝对路径,
主要找压缩包里面的"libstdc++-v3\src"就好了).


3.G++官方说明
从http://ftp.gnu.org/pub/gnu/g++.README中可以看到:
G++ is no longer a separate distribution. Version 2 of G++ is an integral part of GCC. You should get the 
gcc-2.n.tar.gz sources (where n is the highest numbered archive) in the gcc/ directory. C++ users will almost
certainly need to retrieve the libstdc++-2.n.tar.gz distribution as well, 
since that's where all the  standard C++ stream classes (and header files like iostream.h) live. 
翻译:G++不再是一个单独的分支.第二版的G++是GCC的一个有机组成部分.如果你想要看G++的相关内容,你应该去 gcc-2.n.tar.gz
这个包中去寻找,这里的n是gcc目录下的最大的归档数字(我觉得应该是http://ftp.gnu.org/pub/gnu/gcc/gcc-2.95/这个目录下的
G++编译器).
C++用户大部分也肯定会追溯之前的版本(那倒未必),因为那些版本是所有标准C++流式类(比如说像iostream这样的头文件)的发源地.

4.看看你的linux机器的编译器版本
比如说我的一台虚拟机上是这样的:
[muten@localhost ~]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-9/root/usr --mandir=/opt/rh/devtoolset-9/root/usr/share/man --infodir=/opt/rh/devtoolset-9/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-9.3.1-20200408/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC) 


5.啊啊啊,GCC在今年7月都已经发到10.2.0版本了,我还是个菜鸟.

 

C++ STL源码下载及目录结构 c++ STL标准库源代码下载及源码文件目录结构说明 阅读详情

相关推荐

C++STL 体系结构与内核分析(侯捷)——课程笔记(二)

本部分包括OOP和GP的区别、源码之前的必要基础等等。 一、OOP(Object-Oriented programming)与GP(Generic Programming) 1. OOP企图将datas和methods关联在一起 比如标准库中的list: template <class T, class Alloc = alloc> class list{ ...... void sort(); }; 我们看到list定义了一个自己的成员函数,那么为什么l

NiuYutao的博客 478

【C++实验】阅读STL源码并分析

【C++实验】阅读STL源码并分析

ThinkStu的博客 3万+

C++STL 体系结构与内核分析(侯捷)——课程笔记(十四)

本部分是课程的最后一部分,前面STL的六大部件已经都介绍完毕,最后的内容包含一些标准库周边的内容,都整理到这里。 一、一个万用的hashfunction 假设定义了一个这样的Customer类: class Customer{ public: string fname, lname; int no; }; 那么自定义其哈希函数有三种方式: //方式一:创建可调用类型 class CustomerHash { public: std::size_t operator()

NiuYutao的博客 483

STL源码刨析

1. STL概述 STL起源: 为的就是复用性的提升,减少人力资源的浪费,建立了数据结构与算法的一套标准。 STL所实现的、是依据泛型思维架设起来的一个概念结构。这个以抽象概念〔 abstract concepts)为主体而非以实际类(classes)为主体的结构,形成了一个严谨的接口标准。在此接口之下,任何组件都有最大的独立性,并以所谓迭代器〈 iterator)胶合起来,或以所谓配接器(adapter)互相配接,或以所谓仿函数( functor)动态选择某种策略( policy或strategy) 。

frighting_ing的博客 8263

Camera Sensor接口协议全解析(六)聚焦onsemi HiSPi接口的技术突破与应用实践

摘要: Onsemi HiSPi是一种高速并行接口协议,专为高分辨率图像传感器设计,具备1600 Mbps传输速率、低功耗和高兼容性特点。通过对比DVP、MIPI CSI-2等主流协议,HiSPi在工业/医疗领域表现突出,支持动态功耗控制、多ROI和CRC校验。其创新架构包含多PHY设计,提供分组SP、流SP等多种工作模式,满足灵活传输需求。实际应用中,HiSPi在PCB缺陷检测(5μm精度)和液晶面板检测(0.3% Mura检出率)等场景展现卓越性能,成为高速成像领域的关键技术。

GateWorld的博客 1437

STM32 ST-LINK Utility固件烧录全流程详解与实战技巧

本文详细解析了使用STM32 ST-LINK Utility进行固件烧录的全流程与实战技巧。从硬件连接、软件安装、核心三步操作(连接、擦除、烧录)到进阶的选项字节配置与批量脚本烧录,提供了完整的避坑指南和问题排查方案,帮助开发者高效完成STM32程序下载。

lambda的博客 768

STL源码阅读——set 源码阅读

前言 最近刷题有用到set, 于是突然来了兴致,就想了解 STL 中set 的实现。说起set,立刻就能想到的有几点,set 底层用红黑树实现,set 是天然有序的,set 可以去重(不包含重复元素,当然 multiset 可以)。然而还是想对 set 的实现做个了解,比如到底是怎么插入删除的?侯捷大佬的 《STL源码剖析》很不错,菜鸡本鸡没有好好看。带着侯捷大佬的名言“源码面前无秘密”,看了一下 set 的源码,做个简单记录。主要关注set 的插入删除数据,至于红黑树的实现,就不深究了。不同C++版本.

wx_14678的博客 970

uniapp 使用摄像头 live-pusher (APP)

uniapp 中开发 app 时使用live-pusher踩过的坑

随身笔记 1万+

VS2010编译调试STL源代码

平台环境:windows 7 32位+VS2010+STL源代码

KangRoger的专栏 6576

博客系统 - 系统简介与首页设计

用Bootstrap实现手机端的博客导航栏效果。

m0_53450409的博客 1238

PPPoE上网配置不求人:华为路由器命令行操作指南(2023最新版)

本文提供2023年最新的华为路由器PPPoE上网配置命令行操作指南。通过详细的步骤讲解,从连接设备、创建拨号接口、绑定PPPoE客户端到配置内网与NAT,手把手教你完成配置,并附有验证排错方法,助你轻松实现稳定上网。

s4t5u6v的博客 681

STL(C++标准库,体系结构及其内核分析)(STL源码剖析)(更新完毕)

STL(C++标准库,体系结构及其内核分析)(STL源码剖析)(更新完毕)

世界仙境与冷酷尽头's Blog 7848

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比)

本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。

weixin_33738555的博客 343

深入学习c++ c++标准库体系结构与内核分析笔记

c++标准库体系结构与内核分析笔记 泛型编程(Generic Programming,GP) 即使用模板为主要工具来编程。 c++标准库SL 由c++编译器提供的各种头文件。 c++标准模板库STL 占据c++标准库的大部分。并含有六大部分。 STL的编写者们规定,他们写的组件都放在 std 这个命名空间中。 STL六大部件 容器 分配器 算法 迭代器 适配器 仿函数 关系图: 我们先从容器看起,在使用容器时,我们存入取出都涉及到内存的问题,但是这些问题我们并不需要考虑,因为有分配器做容器的支撑。 当我们

narbit的博客 1332

Untiy之如何实现AI+MR (Pico4u 相机推流MR画面给Server做实时AI图像识别)

本文介绍了基于Pico4U企业版开发AI+MR应用的实现方案。文章详细说明了硬件准备步骤,包括购买企业版设备、申请相机权限和注册管理平台。重点讲解了Unity开发中获取摄像头画面的两种技术方案:通过Overlay直接渲染到Android Surface,或使用API获取图像数据转换为Texture。提供了完整的代码示例和权限配置说明,并揭示了底层通过JNI调用Android原生API的技术原理。该方案适用于带电操作等实习场景,可提升安全性和学习趣味性。

TxNet 1342

算法 | 基于灰狼优化算法的无人机三维路径规划方法研究(附matlab代码)

针对复杂环境下的无人机三维路径规划问题,本文提出一种基于灰狼优化算法(Grey Wolf Optimizer, GWO)的解决方案。通过模拟灰狼群体的社会等级与协作捕猎机制,结合动态参数调整策略,优化路径长度与避障性能。实验表明,相较于粒子群优化(PSO)和遗传算法(GA),GWO算法在收敛速度与路径成本上分别提升约25%和18%,且在三维城市地形中表现出更强的避障鲁棒性。本文提供完整的MATLAB代码实现,为无人机自主导航提供理论与技术支撑。

尘世冰封的专栏 287

深入浅出之STL源码分析2_stl与标准库,编译器的关系

在第一篇博客中,从这个例子出发,我们将引出下面的几个问题1.刚才我提到了我的编译器版本是g++ 11.4.0,而我们要讲解的是STL(标准模板库),那么二者之间的关系是什么?STL安装后我们到哪里去看源码?2.我们引入了头文件#include<vector>这里的vector的内容是什么?这中定义方式是干什么?<>的作用是什么?对于stl源码底层到底做了什么?把对应的数据插入到了哪个地址了?什么时候分配的虚拟内存?什么时候扩容?什么时候会分配物理内存?下面我们来重点来说明下问题1.

zhc的博客 1067

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

侯捷——2.C++标准库 体系结构与内核分析

allocators(分配器)是给containers(容器)分配内存的。当要创建容器时,必须先有分配器分配内存。在创建容器时,可以指定分配器,也可以不指定,编译器会默认指定分配器。

壹的博客 561

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【学习笔记】C++STL和泛型编程-侯捷

文章目录C++标准库:体系结构与内核分析一、C++ STL标准库与泛型编程1.header、版本和重要资源2.STL体系结构介绍2.1 STL六大部件(Components)2.2 STL容器的前闭后开区间2.3 基于范围的for循环 ranged-base for2.4 auto关键字 学习笔记源自博览网侯捷大师的C++课程,在原视频及讲义的基础上填充注释。 如有侵权,请联系删除,抱歉。 C++标准库:体系结构与内核分析 C++ Standard Library —— architecure &a

NewsomTech 2973

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++标准库体系结构&参数化模型

进程是程序的一次执行,是操作系统分配资源的单位,多个进程是可以并发执行的,并发执行实际上每个时刻执行的还是一个进程,只不过进程间切换的速度比较快,给人的感觉是并发执行。&:带&函数形参,使用并接收返回值,而 & 叫做引用符,它是 C++ 的内容(目前多数 C 语言编译器也能使用),它可以引用主函数中 x 的地址,而不在调用的函数栈帧中开辟空间,这样就可以对主函数中的 x 进行修改。池化技术:提前保存大量资源,来备用资源或重复使用资源,内存池,(Socket/)线程池,连接池,对象池,

qq_52690703的博客 1074

STL标准库与泛型编程(侯捷)笔记2

介绍分配器allocator,还有容器list的底层实现,讨论iterator traits的设计

阿正的梦工坊 1772

C++标准库(体系结构与内核分析)(侯捷第一讲)(标准库介绍、STL、六大部件、算法、容器分类、Array、Vector、List、Forward-List、Deque、stack、queue、mul...

一、C++标准库介绍 C++标准库:C++ Standard Library C++标准库与STL有什么关系:   STL:Standard Template Library   STL包含6大部件,基本占标准库的80%左右内容,而另外20%是一些好用的零碎的东西,所以说C++标准库包含STL。 编译器一定带着一个C++标准库,是以头文件(header files)的...

dianshu9815的博客 392

STL标准库与泛型编程(侯捷)笔记5

涉及algorithm,仿函数,适配器等的知识

阿正的梦工坊 1142

[侯捷]C++体系结构与内核分析笔记

看视频记录的超简单的笔记以及一些C++资料,为了以后复习mark一下 [侯捷]C++体系结构与内核分析笔记 大佬的C++那些事儿 STL六大部件 容器(Containers) 顺序容器:Array、Vector、Deque、List、Forward_list 关联容器:Set/Multiset、Map/Mulitimap 不定序容器:Unordered Set/Multiset、Unordered Map/Multimap 分配器(Allocators):class template 算法(Algori.

weixin_44715231的博客 449

C++ STL 体系结构与内核分析(五)算法入门/迭代器分类/算法源码剖析(11个例子)

C++标准库算法入门 概念:STL六大部件,算法就是模版函数,很独特,标准库的样子如下图右下角那两框代码所示。 其实算法是要处理容器里的data,只探讨迭代器。:算法看不见容器,算法所获取的信息,需要从迭代器去取,如果算法获取不到迭代器的信息则会报错。 迭代器分类 迭代器移动规则:array/vector(双端队列)/链表:list(双向)、forward_list(单向)/红黑树:s...

ai_XZP_master 288

C++ STL源码分析——iterator分类

【侯捷-SL体系结构内核分析-iterator】 itertor需要向algorithm提供自身的类型 iterator_category,iterator分为以下五种类型: random_access_iterator_tag,可跨任意距离取值 bidirectional_iterator_tag,可前进或后退 forward_iterator_tag input_iterator_tag o...

ZLP_优快云的博客 581
上一篇: SourceInsight问题集锦
下一篇: 数据结构之基础链表
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值