栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

手撕C++STL源码#1 学习STL前要知道的那些事

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

手撕C++STL源码#1 学习STL前要知道的那些事

目录

1. STL各版本介绍

HP版本

P.J.Plauger版本

Rouge Wave版本

STLport版本

SGI STL版本

2. 学习的版本选择

3. SGI STL安装

4. 目录结构

5. 编译运行

6. 学习建议

7. 源码下载链接


1. STL各版本介绍

STL诞生于1979年左右,经过几十年的发展,出现了很多版本。

HP版本

HP版本是所有STL的起源,每个HP的STL头文件都有一份声明,允许任何人免费试用、拷贝、修改、传播、贩卖软件及其说明文件,唯一要遵守的是需要在所有文件中加上HP的版本声明和运用权限说明,这种授权不属于GNU GPL范畴,但属于open source范畴。

P.J.Plauger版本

此版本由P.J.Plauger发展,它继承了HP版本,所以他每个头文件都有HP的版本声明,此外还加上了P.J.Plauger的个人版权说明。P.J.Plauger版本被Visual C++所采用,但其代码可读性较差。

Rouge Wave版本

Rouge Wave版本由Rouge Wave公司开发,它继承了HP版本,所以它每个头文件都有HP的版本声明,此外还加上了Rouge Wave公司的版权说明。此版本被C++ Builder所采用,此版本不是开源的,不能公开、修改或贩卖它。

STLport版本

网上有个STLport站点,提供一个以SGI STL为蓝本的移植版本。

STLport download | SourceForge.nethttps://sourceforge.net/projects/stlport/

SGI STL版本

SGI 版本由Silicon Graphics Computer Systems, Inc公司开发,它继承了HP版本,它每个头文件都有HP的版本声明,此外还加上了SGI公司的版权说明。它的授权不属于GNU GPL范畴,但属于open source范畴。此版本被GCC编译器所采用。


2. 学习的版本选择

推荐SGI STL版本,网上找到的版本都比较老旧了,但此版本的可读性较高,在符号命名和编程风格上做的更好,适合学习。


3. SGI STL安装

目前网上很难找到SGI STL的安装包了,要么要积分,要么要钱,文末会给出安装包下载地址。这里先介绍一下安装方法。安装包是一个exe,名为cygwin-b20.1-full2.exe,双击即可启动安装。

 安装完成后,打开安装目录,看到的内容如下:

开始菜单中,也可以看到Cygwin的图标:

4. 目录结构

我的安装目录是: C:cygnuscygwin-b20,此目录下有个g++目录。

切换到C:cygnuscygwin-b20includeg++下,就能看到STL的源码了。

5. 编译运行

随便找个位置,新建一个cpp,如:

里面的代码简单写两句:

#include 

int main()
{
	printf("hello world!n");
	return 0;
}

然后启动Cygwin B20,通过点击开始菜单的图标启动,或者双击安装目录下的批处理来启动,我的批处理路径为:C:cygnuscygwin-b20cygnus.bat

启动后显示的是一个dos界面,此程序模拟了Linux的运行环境,就像Linux终端一样,可以通过g++命令来编译cpp,下面是编译main.cpp的例子:

6. 学习建议

刚学C++的不建议直接看STL的源码,学起来会很吃力,效果不好,容易受打击,哈哈。
学习时要循序渐进,由浅入深,先易后难,切莫图快,一目十行,对于里面的代码,要仔细推敲。学完一个知识点,最好不看资料,自己敲一遍代码,以检验自己是否真的掌握了。

7. 源码下载链接

链接:https://pan.baidu.com/s/1ImaCd4uH6JRcLVP61qG5Gg https://pan.baidu.com/s/1ImaCd4uH6JRcLVP61qG5Gg
提取码:zimc 
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692175.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号