当前位置: 首页 > news >正文

【STL源码剖析读书笔记】【第1章】STL概论与版本简介

一、STL六大组件:

1、容器(containers):各种数据结构,如:vector、list、deque、set、map,主要用来存放数据。

2、算法(algorithms):各种常见算法,如:sort、search、copy、erase......

3、迭代器(iterators):扮演算法和容器中的胶合剂,是“泛型指针”。所有STL容器均有自己专属的迭代器。

4、仿函数(functors):行为类似函数,可作为算法的某种策略。仿函数是一种重载了operato()的class或classtemple。

5、配接器(adapters): 修饰容器、仿函数、迭代器接口的东西。

6、配置器(allocators):负责空间配置和管理,配置器是一个实现了动态空间配置、空间管理、空间释放的class template.

二、STL六大组件的交互关系

Container通过Allocator取得数据储存空间,Algorithm通过Iterator存取Container内容,Functor可以协助Algorithm完成不同的策略变化,Adapter可以修饰或套接Functor。

图片来自《STL源码剖析》

三、STL的编译器组态

不同的编译器对C++语言的支持程度不尽相同。为了具备广泛移植能力,SGI STL定义了一个环境组态文件<stl_config.h>。<stl_config.h>定义了许多常量,标示某些组态是否成立。如__STL_STATIC_TEMPLATE_MEMBER_BUG用来标识当前编译器无法处理staic members of template classes。



转载于:https://www.cnblogs.com/ruan875417/p/4495568.html

相关文章:

  • SET-UID程序漏洞实验
  • Asp与Asp.Net的区别
  • android host usb
  • Fighting
  • 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之Shader准备(7)
  • Swing基础
  • php post
  • poj--1517
  • Midas Civil的钢束生成器
  • 练习写一个工资结算系统
  • linux的各个子系统
  • 域名注冊以及域名解析设置
  • 约瑟夫环实现之非递归
  • 微信公众号-开发者-自定义菜单-CLICK事件处理
  • “我爱淘”冲刺阶段Scrum站立会议6
  • [NodeJS] 关于Buffer
  • Android Volley源码解析
  • Docker入门(二) - Dockerfile
  • golang 发送GET和POST示例
  • gulp 教程
  • JAVA并发编程--1.基础概念
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • LintCode 31. partitionArray 数组划分
  • PAT A1017 优先队列
  • Python 反序列化安全问题(二)
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • STAR法则
  • XML已死 ?
  • 从tcpdump抓包看TCP/IP协议
  • 大数据与云计算学习:数据分析(二)
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 工作手记之html2canvas使用概述
  • 力扣(LeetCode)22
  • 面试遇到的一些题
  • 前端
  • 算法-图和图算法
  • 提醒我喝水chrome插件开发指南
  • 延迟脚本的方式
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • C# - 为值类型重定义相等性
  • Linux权限管理(week1_day5)--技术流ken
  • ​一些不规范的GTID使用场景
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • ###C语言程序设计-----C语言学习(6)#
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Python第六天)文件处理
  • (SpringBoot)第二章:Spring创建和使用
  • (ZT)薛涌:谈贫说富
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (一)VirtualBox安装增强功能
  • (转) ns2/nam与nam实现相关的文件
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)母版页和相对路径