一、简介

 标准模板库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。

最新文章

  1. Regular Express正则表达式基础
  2. 【转】Xcode托管代码到oschina中的教程
  3. python几大排序算法
  4. Scott Hanselman&#39;s 2014 Ultimate Developer and Power Users Tool List for Windows -摘自网络
  5. 用C#来查看电脑硬件和系统信息
  6. 简单仿京东导航下拉菜单 javascript
  7. 探讨javascript面向对象编程
  8. HTML5学习总结——本地存储
  9. Beta阶段报告
  10. innodb文件损坏处理
  11. 性能测试五十:Jmeter+Influxdb+Grafana实时数据展示系统搭建
  12. Mybatis之分页插件pagehelper的简单使用
  13. 专业语音芯片MT8516 华为AM08蓝牙音箱
  14. sql如何截取字符
  15. IIS部署常见问题总结
  16. Maven pom.xml中的元素modules、parent、properties以及import(转)
  17. react 实现在调父render时,子组件会重新更新
  18. ci钩子
  19. 【OCP认证12c题库】CUUG 071题库考试原题及答案(28)
  20. Elasticsearch+Kibana+Logstash安装

热门文章

  1. 操作系统OS - 重装Windows7卡在completing installation
  2. Lesson 16 The modern city
  3. Codeforces Round #617 (Div. 3)A. Array with Odd Sum(水题)
  4. IELTS Simon wr task p3
  5. rails work
  6. 【PAT甲级】1019 General Palindromic Number (20 分)
  7. 关于eclipse项目右键没有project facets的解决方法遇到的问题
  8. mysql innodb cluster 无感知集群
  9. redhat 7.6 密码破解(无光盘)
  10. Python 爬取 北京市政府首都之窗信件列表-[Scrapy框架](2020年寒假小目标04)