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--标准模板库--简要概述的更多相关文章

  1. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  2. STL标准模板库介绍

    1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的 ...

  3. STL学习系列一:STL(标准模板库)理论基础

    STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广 ...

  4. STL(标准模板库)理论基础,容器,迭代器,算法

    基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间.   ...

  5. STL(标准模板库)基本概念

    一.什么是STL STL(Standard Template Library,标准模板库)的从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),容器 ...

  6. C++ Templates STL标准模板库的基本概念

    STL标准库包括几个重要的组件:容器.迭代器和算法.迭代器iterator,用来在一个对象群集的元素上进行遍历操作.这个对象群集或许是一个容器,或许是容器的一部分.迭代器的主要好处是,为所有的容器提供 ...

  7. STL标准模板库 向量容器(vector)

    向量容器使用动态数组存储.管理对象.因为数组是一个随机访问数据结构,所以可以随机访问向量中的元素.在数组中间或是开始处插入一个元素是费时的,特别是在数组非常大的时候更是如此.然而在数组末端插入元素却很 ...

  8. STL标准模板库之vector

    目录 vector容器 1)什么是vector 2)如何定义 3)常用的Vector函数 1.容量函数 2.增加函数 3.删除函数 4.迭代器 5.访问函数 6.其他函数及操作 7.算法 STL提供了 ...

  9. STL(标准模板库) 中栈(stack)的使用方法

    STL 中栈的使用方法(stack) 基本操作: stack.push(x)  将x加入栈stack中,即入栈操作 stack.pop()  出栈操作(删除栈顶),只是出栈,没有返回值 stack.t ...

随机推荐

  1. Unity Ruby's Adventure 第一步

    官方游戏教程:https://learn.unity.com/project/ruby-s-2d-rpg?language=en 鲁比大冒险是一个2D游戏入门教程,涉及动画,特效,UI,瓦片地图,音效 ...

  2. 【译】ModSecurity

    Preface 本篇译ModSecurity 主页的自身介绍. ModSecurity is an open source, cross-platform web application firewa ...

  3. 带你揭秘Shiro(一)

    提到Shiro,不得不先介绍RBAC介绍 RBAC介绍: RBAC是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的 ...

  4. Linux 周期任务

    一次性任务 在某个特定的时间,执行一次后被清除 相关命令/进程 at 命令 atd进程 在centos6中,系统服务的名称: /etc/init.d/atd 查看系统上该进程时候启动: [root@e ...

  5. Consul初探-从安装到运行

    前言 伟大领袖毛主席说过:实践是检验真理的唯一标准!经过上一篇的学习,我基本掌握了 Consul 的基本原理,接下来就是动手实践了:Consul 的部署方式分为两种,分别是二进制包和docker方式, ...

  6. 在 Python 3.x 版本后,ConfigParser.py 已经更名为 configparser.py 所以出错!

    在 Python 3.x 版本后,ConfigParser.py 已经更名为 configparser.py 所以出错!

  7. vue--CRUD

    1. Create this.$http.post("http://localhost:3000/users",newCustomer).then(function (respon ...

  8. 从0系统学Android--3.2四种基本布局

    从0系统学Android--3.2四种基本布局 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.3 系统控件不够用?创建自定义控件 上一节我们学习了 Android 中的一些常用的控件 ...

  9. 特殊权限SUID

    特殊权限SUID SUID : 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者: chmod u+s File chmod u-s File 如果 FileB本身原来就有执行权限,则S ...

  10. Linux 文件系统简介(FHS:Filesystem Hierarchy Standard)

    一,linux的目录结构 /bin:所有用户都可以使用的可执行程序 /sbin:系统管理员使用的可执行程序 /boot:引导加载器必须用到的静态文件:kernel,initramfs,grub等. / ...