STL源码剖析之组件
本篇文章开始,进行STL源码剖析的一些知识点,后续系列笔记全是参照《STL源码剖析》进行学习记录的
STL在现在的大部分项目中,实用性已经没有Boost库好了,毕竟STL中仅仅提供了一些容器供编码者实用,Boost库相对而言全面了许多,所以更适合做一些项目的开发。但STL源码中依然有很多我们值得学习,思考的地方,包括现在大部分面试,都会问及到STL的框架源码部分。所以决定将这本书其中重要的几个部分拉出来做个笔记,以加深记忆并和大神们探讨探讨。
先简单介绍一下STL中的大致组成部分,一张图就明了

1,容器(Containers):主要是各种数据结构,比如向量(vector)、链表(list)、队列(deque)、集合(set)、图(map)。这些结构均用来存放数据,这些容器也是大部分开发人员最常接触到的内容。
2,算法(Algorithms):常用的算法,比如排序(Sort),查找(Search)、拷贝(Copy)、删除(Erase)。算法主要是为了容器能够更高效的使用。
3,迭代器(Iterator):容器与算法之间的胶合剂,是所谓的“泛型指针”。个人感觉可以理解一个容器中数据类型的指针,可以快速,方便的对数据进行管理和传参,通过迭代器实现了对Operators*,Operator->,Operator++,Operator--进行重载。每一个容器都有自己特殊的迭代器操作方式。
4,仿函数(Functors):相当于一个类中进行了Operators(),这个类就有了类似函数的使用方式,例如Class Fun.... Fun::(int a,int b),Fun类中对()有进行过重载,可以当做函数来使用。
5,配接器(adapters):修饰容器、仿函数、迭代器的接口方法。例如 queue 和 stack 的方法实现底层完全依靠 depue 的方法实现,所以我们就可以将这类容器当做一种配接器容器。
6,配置器(allocators):负责空间配置与管理,实现空间动态分配、管理、释放。
如果是一名不常用STL编写代码的程序员,只要掌握容器、迭代器、仿函数的一些使用方法就可以用于项目。但作为一名“负责任”的程序员,还是尽可能的把源码都挖出来研究一下,毕竟STL最早期的源码还是存在一些漏洞和不够完美的地方,这些问题也会在后面的学习和研究中慢慢记录出来。
STL源码剖析之组件的更多相关文章
- STL"源码"剖析-重点知识总结
STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略多 :) 1.STL概述 STL提供六大组件,彼此可以组合 ...
- 【转载】STL"源码"剖析-重点知识总结
原文:STL"源码"剖析-重点知识总结 STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点 ...
- STL"源码"剖析
STL"源码"剖析-重点知识总结 STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略 ...
- 《STL源码剖析》相关面试题总结
原文链接:http://www.cnblogs.com/raichen/p/5817158.html 一.STL简介 STL提供六大组件,彼此可以组合套用: 容器容器就是各种数据结构,我就不多说,看看 ...
- 《STL源码剖析》学习之traits编程
侯捷老师在<STL源码剖析>中说到:了解traits编程技术,就像获得“芝麻开门”的口诀一样,从此得以一窥STL源码的奥秘.如此一说,其重要性就不言而喻了. 之前已经介绍过迭代器 ...
- 面试题总结(三)、《STL源码剖析》相关面试题总结
声明:本文主要探讨与STL实现相关的面试题,主要参考侯捷的<STL源码剖析>,每一个知识点讨论力求简洁,便于记忆,但讨论深度有限,如要深入研究可点击参考链接,希望对正在找工作的同学有点帮助 ...
- STL源码剖析--迭代器(转)
一.为什么需要traits编程技术 前面说了很多关于traits的光荣事迹,但是却一直没有介绍traits究竟是个什么东西,究竟是用来干什么的?traits在英文解释中就是特性,下面将会引入trait ...
- STL 源码分析六大组件-allocator
1. allocator 基本介绍 分配器(allocator))是C ++标准库的一个组件, 主要用来处理所有给定容器(vector,list,map等)内存的分配和释放.C ++标准库提供了默认使 ...
- 0《STL源码剖析》简介
STL源码剖析 ----侯捷 STL主要包括六个组件: 1.配置器:负责空间配置和管理. 2.迭代器:扮演容器和算法之前的胶合剂,所谓“泛型指针”. 3.容器:各种数据结构,如vector,list, ...
随机推荐
- BZOJ3747 POI2015 Kinoman 【线段树】*
BZOJ3747 POI2015 Kinoman Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[ ...
- 【2018.06.26NOIP模拟】T2号码bachelor 【数位DP】*
[2018.06.26NOIP模拟]T2号码bachelor 题目描述 Mike 正在在忙碌地发着各种各样的的短信.旁边的同学 Tom 注意到,Mike 发出短信的接收方手机号码似乎都满足着特别的性质 ...
- webdriver常用函数总结
#1 创建浏览器对象 driver = webdriver.Chrome() #2 设置隐式等待10秒 driver.implicitly_wait(10) #3 最大化浏览器窗口 driver.ma ...
- MQ 发布/订阅者模式
package com.chauvet.utils.mq.topic; import javax.jms.DeliveryMode; import javax.jms.JMSException; im ...
- Page View Controllers
Page View Controllers You use a page view controller to present content in a page-by-page manner. A ...
- Scala的=>作用
举例: var increase = (x: Int) => x + 1 increase(10) res0: Int = 11 类似于转化符号,=>指明这个函数把左边的东西(任何整数x) ...
- scrapy爬取验证码登录网页
scrapy 验证码登录程序, https://accounts.douban.com/login # -*- coding: utf-8 -*- import scrapy import urlli ...
- [BZOJ5329][SDOI2018]战略游戏
bzoj luogu Description 省选临近,放飞自我的小Q无心刷题,于是怂恿小C和他一起颓废,玩起了一款战略游戏. 这款战略游戏的地图由n个城市以及m条连接这些城市的双向道路构成,并且从任 ...
- mui 修改下拉刷新提示文字的显示位置
第一种: .mui-bar-nav~.mui-content .mui-pull-top-pocket { top: 126px !important; } 第二种: .mui-pull-top-po ...
- Opencv2.2 移植到am335x-y开发板
1.虚拟机上运行cmake-gui,报找不到文件,指示安装. 2.下载opencv2.2.0 http://opencv.org/downloads.html 3.cmake-gui,配置参考< ...