| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> STL教程5-STL基本概念及String和vector使用 -> 正文阅读 |
|
[C++知识库]STL教程5-STL基本概念及String和vector使用 |
夏日炎炎,热浪中我们迎来毕业季,这是告别,也是迈向新起点的开始,CSDN诚邀各毕业生/在校生/职场人讲述自己的毕业季故事,分享自己的经验,技术er的进击之路,等你来书写!你可以选择适合自己的对应身份从以下相关内容方向着笔,也可从自身经历出发,贴合活动主题参与投稿,文章题目自拟。
提醒:在选择对应身份后,在发布作品前请把不用的内容(活动地址请保留)删掉
提醒:在选择对应身份后,在发布作品前请把不用的内容(活动地址请保留)删掉
一、STL基本概念1、STL概述STL(标准模板库),STL广义上分为:容器(container) 算法(algorithm) 迭代器(iterator),从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。 2、STL六大组件容器(vector,list…) 六大件的交互关系,容器通过空间配置器取得数据存储空间,算法通过迭代器存储容器中的内容,仿函数可以协助算法完成不同策略的变化,适配器可以修饰仿函数。 下面开始介绍容器、算法和迭代器 3、容器容器可以嵌套容器,它分为
4、迭代器iterator模式定义:提供一种方法,使之能够依序访问某个容器所含的各个元素,而又无需暴露该容器内部展示方式。(迭代器可以理解为指针,对指针的操作基本都可以对迭代器操作,实际上,迭代器是一个类,这个类封装了一个指针) 4、算法通过有限的步骤解决问题,什么查找,排序等等 容器和算法接触的时候需要迭代器的帮助 5、迭代器基本语法1、迭代器的声明容器提供的迭代器 v.begin()返回开始的迭代器,但是由于容器存放的数据类型不一样,因此迭代器可能会有所差异,因此在定义一个迭代器对象的时候需要指明迭代器的类型, 2、迭代器的使用迭代器对象可以认为是一个指针,容器存放的是什么数据,取出来时(*begin)就是什么数据类型,比如vector< Person >,想要访问Perons的age,是(*Person).age而不是(*Person)->age,因为存放的是Person,而不是Person *
二、STL常用容器1、string容器1)string和char*的对比
2、String常用api1)声明string s=“aaaa”; 2)拼接+=3)追加append
4)查找find
5)替换replace第一个参数是起始位置,第二个参数是长度,第三个参数是替换成为的元素,可以是char*也可以是string。也就是前两个参数围成的区域会被割去换成第三个参数。注意第二个参数是长度 6)比较compare(等于) = 返回 0 (大于) > 返回 1 (小于) < 返回 -1
7)截取字符串substr两个参数为区间,第二个参数默认为最后 8)插入insert和删除eraseinsert第一个参数是位置,第二个参数是插入的字符串,字符串可以是char*也可以是string 3、vector容器vector< int>v;v是一个对象,v的地址是对象的地址,并不是第一个元素的地址,看第一个元素的地址应该是&(v[0]) vector动态增长原理当插入新元素时,如果空间不足,那么vector会重新申请更大的一块内存空间,将原空间数据拷贝到新空间,释放旧空间的数据,再把新元素插入新申请空间。
3、vector常用api1)vector构造函数1、拷贝构造函数
下面是常用的将数组复制到vector中的方法 2)插入push_back和删除元素pop_back
3)swap交换两个容器的数据空间交换两组的数据空间实际上是将指针交换了,空间并没有变化
4)size()获取容器有效元素个数(注意和capacity的区别)
4)capacity()获取当前容器的最大容量容量和size可能不相等,当容器的容量不够时,它会申请更大的(不是+1个空间,避免重复复制)
5)resize改变容器中的有效元素个数1、当所给值大于容器当前的size时,将size扩大到该值,扩大的元素为第二个所给值,若未给出,则默认为0。
为什么呢,vector(v)是初始化了一个匿名对象,初始化完成后通过swap交换空间,两个内存空间的指针发生了交换,然后匿名对象执行结束就会被销毁 6)at和[]
7)front和back返回第一个和最后一个元素
8)insert插入元素和earse删除元素和clear清空vector
earse位置参数也只能是迭代器
9)reserve和resize的区别通过reserse函数改变容器的最大容量,resize函数改变容器中的有效元素个数。 reserve规则: resize规则: 三、总结1、STL是一些“容器”的集合,STL也是算法和其他一些组件的集合。STL的容器和算法的桥梁是迭代器 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:01:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |