一、简介

 标准模板库STL,是一组模板类和函数。提供了:

  1、容器。用于存储信息。

  2、迭代器。用于访问容器中的信息。

  3、算法。操作容器内容。

1、容器

  STL有两种类型的容器类:

(1)顺序容器

  std::vector。动态数组。

  std::deque。和vector类似。

    【vector和deque区别】

    ① deque使用不止一块内存(而vector必须使用一块连续内存),所以传地址需要注意

    ② 除了头尾两端,在任何地方安插或删除元素,都将导致指向deque元素的所有pointers、references、iterators失效。

    ③ deque的动态数组头尾都开放,允许在开头插入或者删除元素。

  std::list。双向链表。

  std::forward_list。单向链表。

(2)关联函数

  std::set。存储各不相同的值,并在插入时候进行排序。复杂度为对数。

  std::unordered_set。功能等同于set。但复杂度为常数。(C++11新增)

  std::multiset。存储值,并在插入时候进行排序。但是值可以是相同的,即值不需要唯一。

  std::unordered_multiset。与unordered_set类似,但是允许存储多个值相同的项,即值不需要唯一。(C++11新增)

  

  std::map。存储键值对,并根据唯一的键排序。复杂度为对数。

  std::unordered_map。存储键值对,并根据唯一的键排序。复杂度为对数。(C++11新增)

  std::multimap。与map类似,但是键不要求唯一。

  std::unordered_multimap。与unordered_map类似,但是键不要求唯一。(C++11新增)

此外还提供了:

(3)容器适配器。

  std::stack。后进先出。在栈顶压入或者弹出元素。

  std::queue。先进先出。可以删除最先插入的元素。

  std::priority_queue。优先级队列,优先级最高的元素排在队列开头。

2、迭代器

  最简单的迭代器是指针。STL迭代器可以理解为模板类的一部分,是一种泛型指针。算法为模板函数,迭代器让模板函数能够无缝地处理容器。

(1)输入迭代器

  通过对输入迭代器解除引用,它将引用对象。

(2)输出迭代器

  执行写入操作。

3、算法

  常用的STL算法如下:

  std::find。在集合中查找值。

  std::find_if。根据条件查找值。

  std::reverse。反转顺序。

  std::remove_if。根据条件反转顺序。

  std::transform。根据用户定义的变换函数对容器中的元素进行变换。

除了上面的,STL还提供了一个操纵字符串的模板类std::basic_string<T>。具体化为std::string和std::wstring。

C++编程学习(十二) STL的更多相关文章

  1. Linux网络编程学习(十二) ----- 结语

    该书提前看完了,重点看了第四章和第六章,第七章以后只是大致浏览了一下,如果以后工作中涉及这一块再仔细研究一下,大概花了二十天的样子,主要了解了进程间的通信方式.socket编程以及五种I/O模式,看的 ...

  2. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  3. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  4. Scala学习十二——高阶函数

    一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...

  5. Java编程思想学习(十二) 数组和容器

    一.数组 1).数组的多种初始化方式 下面总结了初始化数组的多种方式,以及如何对指向数组的引用赋值,使其指向另一个数组对象.值得注意的是:对象数组和普通数组的各种操作基本上都是一样的:要说有什么不同的 ...

  6. JVM学习十二:JVM之性能监控工具

    前面我们学习了很多JVM相关的理论知识,那么本节将重点讲述的是工具的使用,正所谓:工欲善其事,必先利其器.因此,本节介绍常用的性能监控工具,用于性能监控和问题排查. 一.系统性能监控 系统性能工具用于 ...

  7. 通过Socket实现TCP编程(十二)

    原文链接:https://www.cnblogs.com/hysum/p/7531529.html Socket通信 : TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 基于TCP ...

  8. Dart语言学习(十二) Dart面向对象

    Dart作为一种高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式. 基于mixin的继承方式是指:一个类可以继承自多个父类,相当于其他语言里的多继承. 所有的类都有同一个基类Obje ...

  9. 【读书笔记】C#高级编程 第二十二章 安全性

    (一)身份验证和授权 安全性的两个基本支柱是身份验证和授权.身份验证是标识用户的过程,授权在验证了所标识用户是否可以访问特性资源之后进行的. 1.标识和Principal 使用标识可以验证运行应用程序 ...

  10. java web 学习十二(session)

    一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...

随机推荐

  1. Linux搭建maven私服

    1.把压缩包上传到服务器/usr/local/tmp 2.在/usr/local下创建nexus文件夹(mkdir nexus) 3.解压压缩包nexus-3.13.0-01-unix.tar.gz到 ...

  2. PTA的Python练习题(八)

    从 第3章-15 统计一行文本的单词个数 继续 1. s = input() count=0 for c in s: if c==' ': count=count+1 if c=='.': break ...

  3. linux搭建jenkins+github详细步骤

    事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...

  4. 如何批量删除.svn文件

    参考资料:https://www.cnblogs.com/kisf/articles/4760367.html 当项目不需要SVN标志的时候,我们一般怎么办哪??可能很多人设置Windows显示隐藏文 ...

  5. 【剑指Offer面试编程题】题目1355:扑克牌顺子--九度OJ

    题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他 ...

  6. C语言入门---第九章 C语言指针

    没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. ===== ...

  7. c++中的运算符重载operator1(翁恺c++公开课[30]学习笔记)

    运算符重载规则: 只有已经存在的运算符才能被重载,不能自己制造一个c++中没有的运算符进行重载 重载可以在类或枚举类型内进行,也可以是全局函数,但int.float这种已有的类型内是不被允许的 不能二 ...

  8. LeetCode简单题(二)

    题目一: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的 ...

  9. js中的||和&&的用法

    与其他语言不同,在JS中,a&&b或者a||b返回的是要么是a,要么是b:而其他语言中返回的是true or false 对于js中的或与运算,需要隐式的转换为boolean类型再来运 ...

  10. SpringSecurity-权限关联与控制

    6.3 服务器端方法级权限控制 在服务器端我们可以通过Spring security提供的注解对方法来进行权限控制.Spring Security在方法的权限控制上 支持三种类型的注解,JSR-250 ...