当前位置:网站首页>STL简介
STL简介
2022-08-03 14:04:00 【Slow Just Fast】
C++ STL
文章目录
1.什么是STL
1.1STL概念
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架
STL不是标准库,它是标准库的重要组成部分,主用于数据结构与算法
2.STL的版本
2.1STL的历史版本
- 原始版本
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本–所有STL实现版本的始祖
- P. J. 版本
由P. J. Plauger开发,继承自HP版本,被微软Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异
- RW版本
由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般
- SGI版本
由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版本。被GCC(Linux)采用,可移植性好, 可公开、修改甚至贩卖,从命名风格和编程风格上看,阅读性非常高。学习STL要阅读部分源代码, 主要参考的就是这个版本
3.STL的六大组件
3.1STL六大组件图解
4.如何学习STL
4.1大佬对于STL的学习经验分享
建议大家去看看侯捷老师的书《STL源码剖析》,将的非常好,堪称神作
5.STL的缺陷
5.1STL缺陷
1. STL库的更新太慢了。这个得严重吐槽,上一版靠谱是C++98,中间的C++03基本一些修订。C++11出
来已经相隔了13年,STL才进一步更新
2. STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的
3. STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取
4. STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的
边栏推荐
猜你喜欢
随机推荐
如何在 UE4 中制作一扇自动开启的大门
Left index of all anagrams in leetcode/string (some permutation of s1 string is a substring of s2)
GDB调试CoreDump文件
OpenHarmony高校技术俱乐部计划发布
Leetcode 448. Find All Numbers Disappeared in an Array to Find All Disappeared in an Array of Numbers (simple)
【web渗透】CSRF漏洞详细讲解
STL——vector
使用域名注册服务 Domains配置域名【华为云至简致远】
利用 NFT 释放网站的潜力
动作条的多项复选
Role usage in Ansible
[A summary of the sorting and use of activation functions in deep learning]
如何合理安排一天,做到高效备考?
UE4 C disk cache solution
【深度学习中的激活函数的整理与使用总结】
参数量仅0.5B,谷歌代码补全新方法将内部生产效率提升6%
致一位湖南女孩
How to connect a VMware virtual machine to the network "recommended collection"
【框架】idea找不到xxx依赖项怎么办
基于ModelArts的动漫头像自动生成丨【华为云至简致远】