C++11中STL总结+(boost库)

用了快一年的STL库,决定写一下这一年的使用心得与总结。

1、概述

个人觉得 STL == {算法,容器,迭代器}

类型 头文件
算法 include < algorithm >
迭代器 include < iterator >
容器 include< map/ vector/ set / list / queue/ …>

C++primer 上有一句非常经典的话“”算法操作容器,但不改变容器!“”

这个操作容器:指的是 通过 iterator 遍历容器。
不改变容器:指的是不改变容器的性质,最重要的是size。
但是:算法不改变容器,有的时候还必须改变容器的size。这个由谁来做呢? 答:迭代器。例如:back_inserter

Effective c++上有一句话:不要使用过期的迭代器 !

迭代器会过期(失效)? vector上的任意一次插入,或者删除都可能导致迭代器失效。例如,从中间插入一个元素,那后面就会的迭代器(指针)都失效了。因此有数据在内存上的移动。
有人认为push_back不会导致迭代器失效:这更小小心了,假设现在vector要扩容,push_back后原来所有的得iterator都失效。
此时你用find,copy等算法,操纵无效迭代器,来想返回你期望的结果,结果可想而知。

1.1 数据结构

+-+-+-+-+-+-+-+-+-+-+-+-+-+- 分割线 -+-+-+-+-+-+-+-+-+–+-+-+-+-
STL 中提供了哪些数据结构:线性表(链表list,动态数组vector)
包括红黑树(Set 、map),Hash表(unordered_map、unordered_set)
以及二叉堆/ 优先队列(priority_quene),这个数据结构支持插队,也就是优先级高的任务,插到任务队列的对应位置。此数据结构的插入操作时间复杂度为O(logn),而在线性表中,频繁的插入操作时间复杂度为O(n)
队列(queue),(stack)
+-+-+-+-+-+-+-+-+-+-+-+-+-+- 分割线 -+-+-+-+-+-+-+-+-+–+-+-+-+-

2、算法

···

3、容器

···

4、迭代器

迭代器中在I/O中有一个经典的应用
1- 从输入读入一系列的 数字/字母/字符串 放入到特定的容器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值