栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间:发布时间: 百科书网 趣学号
1、STL基本概念

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

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

使用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)常用赋值操作

 

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1032876.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号