C++STL概述1

STL基本概念

  • 容器:可容纳各种数据类型的通用数据结构,是类模板

  • 迭代器:可用于依次存取容器的元素,类似于指针

  • 算法:用于操作容器中的元素的函数模板

    • sort()来对一个vector中的数据进行排序

    • find()来搜索一个list中的对象

算法本身与他们操作的数据的类型无关,因此它们可以在从简单数组到高度复杂容器的任何数据结构上使用。

容器概述

顺序容器:

概述

容器并非排序的,元素插入位置同元素的值无关

vector——动态一维数组

头文件

元素在内存连续存放。随机存取任何元素都能在常数时间完成

尾端增删元素具有较佳的性能(大部分是常数时间)

deque——双向队列

头文件

元素在内存连续存放。随机存取任何元素都能在常数时间完成(相比vector比较慢)

两端增删元素具有较佳的性能(大部分是常数时间)

list——双向链表

头文件

元素在内存不连续存放,不支持随机存放

任何位置增删元素都能在常数时间里完成

关联容器:

概述

  • 元素是排序
  • 插入任何元素,都按相应的排序规则来确定位置
  • 在查找时具有较好性能
  • 通常以平衡二叉树的方式实现,插入和检索都是log(n)

set/multiset

头文件

set即集合。set中不允许相同元素,multiset中允许

map/multimap

头文件

map和set的不同在于map中存放的元素有且只有两个成员变量,一个为first,一个为second

map根据first值对元素进行从小到大排序,并可快速地根据first来检索元素

map与multimap的不同在于,map不允许相同的first值的元素

容器适配器:

stack(栈)

头文件

栈。是项的有限序列,并满足序列中被删除、检索和修改的项只能是最近插入序列的项栈顶的项)

后进先出

queue(单向队列)

头文件

队列。插入只可以在尾部进行;

删除、检索和修改允许从头部进行

先进先出

priority_queue(优先级队列)

头文件

优先级队列:队列里面维持某种有序

最高优先级元素总是第一个出列

顺序容器与关联容器*有的成员函数

  • begin():返回指向容器中第一个元素的迭代器

  • end():返回指向容器中最后一个元素后面位置的迭代器

  • rbegin():返回指向容器中最后一个元素的迭代器

  • rend():返回指向容器第一个元素前面位置的迭代器

  • erase():从容器中删除一个或者几个元素

  • clear():清空容器

顺序容器常用成员函数

  • front():返回容器中第一个元素引用

  • back():返回容器中最后一个元素引用

  • push_back():在容器末尾增加新元素

  • pop_back():删除容器末尾的元素

  • erase():删除迭代器指向的元素(可能会使迭代器失效)

    ​ 或者删除一个区间,返回被删除元素后面元素的迭代器

上一篇:Hadoop生态圈(二十八)- MapReduce Map阶段执行流程核心源码分析


下一篇:java8 stream().map().collect()用法