c++(27)STL:容器、算法、迭代器

1、STL基本概念

standard template library,标准模板库,是由惠普实验室开发的一系列软件的统称。STL广义上分为容器container、算法algorithm、迭代器iterator,容器和算法之间通过迭代器进行无缝连接。STL几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会。

在c++标准中,STL被组织成一下13个头文件

<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<numeric>、<queue>、<set>、<stack>、<utility>

使用STL的优点

(1)且现在STL是C++的一部分,被内建在c++编译器中,不需要额外安装。

(2)特点:数据结构(容器)和算法分离。迭代器作为容器和算法的桥梁。

(3)高重用性、高性能、高移植性、跨平台

2、string容器

在学习string容器之前,我们要先搞清楚string类型的特性。我们和char *字符串对比

  • char* 是一个指针,string是一个类。----string封装了char *,管理这个字符串,是一个char *型的容器
  • string封装了很多实用方法。----查找find,拷贝copy, 删除delete, 替换replace,插入insert
  • 不用考虑内存释放和越界。----string管理char*所分配的内存,每一次string的复制、取值都由string类负责维护
  • string和char*可以互相转换。----string str = "zhang3"; char* pch = str.c_str(); 

(1)string的构造函数

 (2)string的赋值、取值操作

----  成员方法assign("zhang3");赋值操作

---- []中括号数组下标的方式,这种方式存在越界风险,可能让程序崩溃

---- at(i);这种方式则会在越界时抛出越界异常,

(3)string拼接操作  +, +=

 (4)string查找和替换

 (5)string字符串比较

 (6)string字符串子串

 (7)string插入和删除

 string案例

3、vector容器

3.1vector单口容器:动态数组、可变数组

 vector提供两种迭代器,一种是正向迭代器begin和end,还有反向迭代器rbegin和rend。除了在尾部操作的pushback和popback之外,也提供插入方法insert。

注意:我们一般不使用insert在中间插入数据,因为vector容器是一块连续的地址空间,如果在中间插入,那么插入地点后面的元素,都要向后移动,消耗资源。

3.2vector动态增长原理

当插入新元素的时候,如果空间不足,vector会申请更大的一块内存空间,将原来空间的数据拷贝到新空间,并释放原来的空间。再将新元素放入新申请的空间。vector的空间申请策略是会申请两倍空间大小,除非数据量占用空间特别大的时候,vector会改变申请空间策略。

3.3vector API接口

 (1)构造函数

 (2)常用赋值操作

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值