C++ STL总结

基本概念STL(Standard Template Library,标准模板库) STL从广义上分为:容器(container)、算法(algorithm)、迭代器(iterator) 容器和算法之间通过迭代器进行无缝衔接 STL几乎所有的代码都采用模板类或者模板函数STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据 算法:各种常用算法,如sort、find、cop
摘要由CSDN通过智能技术生成

基本概念

  • STL(Standard Template Library,标准模板库)
  • STL从广义上分为:容器(container)、算法(algorithm)、迭代器(iterator)
  • 容器算法之间通过迭代器进行无缝衔接
  • STL几乎所有的代码都采用模板类或者模板函数

STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器

  1. 容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据
  2. 算法:各种常用算法,如sort、find、copy、for_each等
  3. 迭代器:扮演了容器和算法之间的胶合剂。
  4. 仿函数:行为类似函数,可作为算法的某种策略。
  5. 适配器:一种用来修饰容器或者仿函数或迭代器接口的东西。
  6. 空间配置器:负责空间的配置与管理。

容器类型

序列式容器

string

  • 本质:string是C++风格的字符串,而string本质上是一个类
  • string和char*的区别:
    • char*是一个指针
    • string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器
  • 特点:
    • string类内部封装了很多成员方法,例如:查找find、拷贝copy、删除delete、替换replace、插入insert等
    • string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责

vector

  • 功能:vector数据结构和数组非常相似,也称为单端数组
  • vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展
  • 动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间
  • 插入删除:
    • 尾插---push_back
    • 尾删---pop_back
    • 插入---insert(提供位置迭代器)
    • 删除---erase(提供位置迭代器)
    • 清空---clear

deque

  • 功能:
    • 双端数组,可以对头端进行插入删除操作
  • deque与vector区别:
    • vector对于头部的插入删除效率太低,数据量越大,效率越低
    • deque相对而言,对头部的插入删除速度会比vector快
    • vector访问元素时的速度会比deque快,这和两者内部实现有关
  • deque内部工作原理:
    • deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据
    • 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
  • deque容器的迭代器也是支持随机访问的
  • 插入删除:
    • 插入和删除提供的位置是 迭代器
    • 尾插---push_back()
    • 尾删---pop_back()
    • 头插---push_front()
    • 头删---pop_front()
    • insert(pos,elem);

      在pos位置插入一个elem元素的拷贝,返回新数据的位置

      insert(pos,n,elem);

      在pos位置插入n个elem数据ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值