STL--标准模板库--简要概述
STL--标准模板库
#include <vector> //头文件
STL(Standared Template Library)即标准模板库,惠普实验室开发的一系列软件的统称。他是由Alexader Stepanov、Meng Leng Lee和David R Musser在惠普实验室工作时所开发出来的。
STL主要是一些”容器“ 的集合,这些”容器“ 有list、vector、set、map等等,STL也是算法和其他一些组件的集合,是世界上顶级C++程序员多年的杰作,是泛型编程的一个经典范例
STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL是C++的一部分,内建在C++ 编译器中,因此不用额外安装什么
STL可分为六部分:
容器(containers)
迭代器(iterators)
空间配置器(allocator)
配接器(adapters)
算法(algorithms)
仿函数(functors)
STL简介
容器
特殊的数据结构,实现了数组、链表、队列、等等,实质是模板类。
每一种容器都有其优缺点,为满足程序的各种需求,STL准备了多种容器类型。
迭代器
一种复杂的指针,可以通过其读写容器中的对象,实质是模板类。
用于在遍历对象群集的元素,对象群集可能是容器,有可能是容器的一部分。
主要用途是为容器提供一组很小的公共接口,利用这个接口,某项操作可以进行群集内的下一个元素
算法
读写容器对象的逻辑算法:排序、遍历、查找、等等,实质是模板函数
所有容器的迭代器都提供一致的接口,通过迭代器的协助,算法程序可以用于任意容器。
空间配置器
容器的空间配置管理模板类
配接器
用来修饰容器、仿函数、迭代器接口
组件间的关系
容器通过配置器取得数据储存空间,算法通过迭代器 存取容器 内容,仿函数可以协助算法完成不用的策略变化,配接器可以修饰或套接仿函数。
STL的一个重要特点是数据结构和算法的分离 。这种分离使得STL变得非常通用
STL另一个重要特性是它不是面向对象 。为了具有足够通透性,STL主要依赖于模板而不是封装、继承和多态。
标准容器
STL标准模板库是一种泛型编程。泛型编程关注的是算法,在C++中,利用模板完成编写独立于数据类型的代码。
STL容器包括:数组、链表、队列等等;能进行查找、排序、随机排队等等。
STL序列容器:vector、deque、list
STL关联容器:set、mulitiset、map、mulitimap
STL迭代器:iterator
STL序列容器
vector
将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速 ,但是在中部或者头部安插元素比较费时
deque
是“double-ended queue” 的缩写,可以随机存取元素(用索引直接存取),数组头部和尾部添加和尾部添加或移除元素都非常快速 ,但是在中部或头部安插元素比较费时
list
双向链表,不提供随机存取(按顺序走到需存取的元素),在任何位置上执行插入或删除动作都非常迅速 ,内部只需调整一下指针
STL关联容器
set/multiset
内部的元素依据其值自动排序,set内的相同数值的元素只能出现一次,multisets内可包含多个数值相同的元素 ,内部由二叉树实现(实际上基于红黑树(RB-tree)实现),便于查找。
map/multimap
map的元素是成对的键值/实值,内部的元素依据其值自动排序,map内的相同数值的元素只能出现一次,Multimap内可包含多个数值相同的元素,内部由二叉树实现(实际上基于红黑树实现),便于查找
其它一些容器:
hash_map,hash_set,hash_multiset,hash_multimap
教程地址:
STL--标准模板库--简要概述的更多相关文章
- STL标准模板库(简介)
标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...
- STL标准模板库介绍
1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的 ...
- STL学习系列一:STL(标准模板库)理论基础
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广 ...
- STL(标准模板库)理论基础,容器,迭代器,算法
基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. ...
- STL(标准模板库)基本概念
一.什么是STL STL(Standard Template Library,标准模板库)的从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),容器 ...
- C++ Templates STL标准模板库的基本概念
STL标准库包括几个重要的组件:容器.迭代器和算法.迭代器iterator,用来在一个对象群集的元素上进行遍历操作.这个对象群集或许是一个容器,或许是容器的一部分.迭代器的主要好处是,为所有的容器提供 ...
- STL标准模板库 向量容器(vector)
向量容器使用动态数组存储.管理对象.因为数组是一个随机访问数据结构,所以可以随机访问向量中的元素.在数组中间或是开始处插入一个元素是费时的,特别是在数组非常大的时候更是如此.然而在数组末端插入元素却很 ...
- STL标准模板库之vector
目录 vector容器 1)什么是vector 2)如何定义 3)常用的Vector函数 1.容量函数 2.增加函数 3.删除函数 4.迭代器 5.访问函数 6.其他函数及操作 7.算法 STL提供了 ...
- STL(标准模板库) 中栈(stack)的使用方法
STL 中栈的使用方法(stack) 基本操作: stack.push(x) 将x加入栈stack中,即入栈操作 stack.pop() 出栈操作(删除栈顶),只是出栈,没有返回值 stack.t ...
随机推荐
- bayaim——docker.txt
#菜鸟教程地址https://www.runoob.com/docker/docker-tutorial.html#docker官方地址仓库https://hub.docker.com/ ------ ...
- VMware Workstation 15 Pro中安装ubuntu1804
这篇笔记是一篇安装教程,没有什么实际的意义,仅为了记录一下……距离上次弄这东西不知道多长时间了,以至于这次再次使用时很是生疏,于是就想着把过程记录下来方便之后查看. 这里不涉及VMware Works ...
- IoT缺德相关
https://github.com/nebgnahz/awesome-iot-hacks <揭秘家用路由器0day漏洞挖掘技术> Embedded Device Security: Pw ...
- Mac VMware Fusion CentOS7配置静态IP
目录 安装CentOS7 配置静态IP 安装CentOS7 这里我们要安装CentOS7 64位,所以选择CentOS7 64位配置 我们点击存储后,vmware会自动帮我们创建一个虚拟机,但是我们还 ...
- AndroidStudio使用的kotlin简介
Kotlin是一种在Java虚拟机上执行的静态型别程式语言,它也可以被编译成为JavaScript原始码.它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的程式语言,其名称来自于圣 ...
- TDD的简单实践
前言 最近有幸跟随资深ThoughtWorks咨询师熊节老师一起学习测试驱动设计,经过短暂的十几天培训,对测试驱动设计的基本原则.实践模式.技巧有了一点点初步的认识. 在此之前,经常自嘲我经历的公司实 ...
- Android View的background和padding
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/181 最近在做一个需求,是对im聊天消息设置气泡背景,之前 ...
- tp、tftp、nfs--服务器搭建
服务器 1. ftp服务器 1.1检查是否安装 vsftpd -version 1.2 安装 sudo apt-get install vsftpd 1.3卸载 sudo apt-get remove ...
- rocksdb学习笔记
rocksdb是在leveldb的基础上优化而得,解决了leveldb的一些问题. 主要的优化点 1.增加了column family,这样有利于多个不相关的数据集存储在同一个db中,因为不同colu ...
- ORDER BY导致索引使用不理想
在MySQL中经常出现未按照理想情况使用索引的情况,今天记录一种Order by语句的使用导致未按预期使用索引的情况. 1. 问题现象 1.1 SQL语句: SELECT DISTINCT p.* ...