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

本文总结了一年使用C++11 STL的经验,包括算法、容器和迭代器的要点。强调了算法不改变容器大小但迭代器可能因容器操作失效,特别是vector的插入和扩容。同时介绍了STL提供的数据结构如线性表、红黑树和哈希表等,并提及了在I/O中的应用。文章还提到了数字转换为字符串的两种方法:stringstream和std::to_string。
摘要由CSDN通过智能技术生成

用了快一年的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、付费专栏及课程。

余额充值