C++ STL之string初始

在这里插入图片描述

  • 我最近开了几个专栏,诚信互三!
    ====> |||《算法专栏》::刷题教程来自网站《代码随想录》。|||
    ====> |||《C++专栏》::记录我学习C++的经历,看完你一定会有收获。|||
    ====> |||《Linux专栏》::记录我学习Linux的经历,看完你一定会有收获。|||
    ====> |||《C#专栏》::记录我复习C#的经历,深度理解查漏补缺,不定期更新。|||

C++ STL之string初始

  • STL介绍
  • string类
    • 数据成员
    • 成员函数
      • 构造函数
      • 容量和大小
      • 访问
      • 修改
      • 迭代器初识

STL介绍

STL(标准模板库),自C++11后引进,该库中含有各种常见数据结构,算法…模板。
在这里插入图片描述

它们的存在使得我们编写C++程序的效率更高,STL并非是C++祖师爷开发,大多数都由一些个人,公司等,其中有各种版本,我们主要以P.J.版和SGL版为例。

string类

std::string ------ typedef basic_string< char > string;

string类就是一个字符串和各种函数包装成了一个类,string类的出现其实比STL早,随后被归于了STL中。

数据成员

string中较为重要的数据成员有

char str[]
int capacity
int size

成员函数

构造函数

string有多个构造函数。
在这里插入图片描述
其中(1),(2),(4)需要较为常用,需要记住,(3)函数的作用如图。
在这里插入图片描述

如图所示,pos是从某个字符开始,而len则是长度了,该构造函数的作用就是从下标为pos的字符开始的后len个字符拷贝给一个对象。
len有一个缺省值,npos,该值是一个静态成员变量,static size_t npos = -1该值是一个很大的值,是为了不论字符长度多大,只要缺省len,则将从pos开始的字符全都拷贝
在这里插入图片描述

容量和大小

在这里插入图片描述
其中最重要的是,size,resize,capacity,reserve
size和length的作用都一样,计算串的大小,不包含’\0’,存在2个作用相同的函数的原因就是string的出现比STL早,但最后被归于STL,而语言又只能向前更新。
在这里插入图片描述
capacity函数用来计算当前字符数组的容量,要注意的是,容量capacity和大小size是不同的,size及该串有多少个有效字符,而capacity则代表该串有多少个空间,所以size < capacity
在这里插入图片描述
resize,reserve,resize用来重新设置串的大小,reserve用来设置串的容量。
在这里插入图片描述

此处reserve后,容量比30大的原因是因为vs下对string扩容会有内存对齐,在Linux下使用该函数就不会存在该问题。

resize的使用会影响到capacity。
在这里插入图片描述
resize函数的用处不在于此
在这里插入图片描述
在这里插入图片描述

若resize后大小大于原大小,则在其余空间处部字符c。

访问

在这里插入图片描述
访问主要了解operator[],at
这2个函数除了在越界访问时进行的警告不同,其他几乎一样,在C语言中,检查越界是抽查式,而C++的访问函数解决了这个问题,只要越界,必会报错。
在这里插入图片描述

修改

在这里插入图片描述
关于修改的函数主要了解operator+=,insert,erase
operator+=可以在一个string类型的后面追加字符串/字符,这是一个十分常用的函数。
在这里插入图片描述
insert 可以在某个位置插入某些字符/串在这里插入图片描述
在这里插入图片描述
erase可以对串的某个范围/使用迭代器迭代,进行删除。
在这里插入图片描述
在这里插入图片描述

迭代器初识

迭代器是各种可迭代类型中的一个成员,迭代器可以帮助我们完成对此种类型的遍历。

声明一个迭代器(以string为例)
在这里插入图片描述
普通迭代器和const迭代器的区别是普通迭代器可以修改迭代器所指向的内容,而const迭代器无法修改其所指向的内容。

与迭代器有关的函数如图。
在这里插入图片描述
这些函数其实就2中类型,(begin end) (rbegin rend),c开头的成员函数其实就是返回const迭代器,这些函数可以在某些时候增加代码可读性,如图。

在这里插入图片描述
begin,end begin函数返回可迭代类型最开始的起始位置,是闭区间,end返回终止位置,是开区间[begin,end)
rbegin,rend则是逆置的意思,及rbegin = end,rend = begin,依旧是左闭右开[rbegin,rend)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/191263.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习之路 —— Java高级

文章目录 前言1. 单元测试2. 反射2.1 获取Class对象的三种方式2.2 获取类的构造器的方法2.3 获取类的成员变量2.4 获取类的成员方法2.5 反射的作用 3. 注解3.1 自定义注解3.2 注解的原理3.3 元注解3.4 注解的解析 4. 动态代理5. 总结 前言 终于走到新手村的末端了&#xff0c;…

WPF中行为与触发器的概念及用法

完全来源于十月的寒流&#xff0c;感谢大佬讲解 一、行为 (Behaviors) behaviors的简单测试 <Window x:Class"Test_05.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winf…

计算机网络——WLAN简解

1. WLAN的发展历程 ❓ WLAN和WIFI有什么区别。 &#x1f604; 具体来说&#xff0c;WALN是抽象的概念&#xff0c;代表这无线局域网这一类技术&#xff0c;而WIFI则是具体的具体技术标准&#xff0c;虽然在生活中&#xff0c;二者的表现是强相关的&#xff08;因为是使用的wifi…

S7-1200PLC 作为MODBUSTCP服务器通信(多客户端访问)

S7-1200PLC作为MODBUSTCP服务器端通信编程应用&#xff0c;详细内容请查看下面文章链接&#xff1a; ModbusTcp通信(S7-1200PLC作为服务器端)-CSDN博客文章浏览阅读239次。S7-200Smart plc作为ModbusTcp服务器端的通信S7-200SMART PLC ModbusTCP通信(ModbusTcp服务器)_s7-200 …

2023.11.18 - hadoop之zookeeper分布式协调服务

1.zookeeper简介 ZooKeeper概念: Zookeeper是一个分布式协调服务的开源框架。本质上是一个分布式的小文件存储系统 ZooKeeper作用: 主要用来解决分布式集群中应用系统的一致性问题。 ZooKeeper结构: 采用树形层次结构&#xff0c;没有目录与文件之分,ZooKeeper树中的每个节点被…

“流量为王”的时代一去不返!如何押注互联网下一个黄金十年

目录 1“流量为王”的时代一去不返&#xff01;如何押注互联网下一个黄金十年 2AI夺走的第一份工作竟是OpenAI CEO&#xff1f;阿尔特曼被“扫地出门”&#xff0c;网友热评&#xff1a;是被GPT-5取代了吗&#xff1f;马斯克更“毒”&#xff0c;挂出求职申请链接 3GPT-4V新玩…

人工智能基础_机器学习044_逻辑回归代码实现与手动计算概率---人工智能工作笔记0084

上面我们已经把逻辑回归的公式,以及,公式对应的图形都画画出来了,然后我们再来看看 如何用代码实现 可以看到上面是代码,咱们自己去写一下 import numpy as np from sklearn.linear_model import LogistieRegression from sklearn import datasets # 训练数据和测试数据拆分…

WeTab--颜值与实力并存的浏览器插件

一.前言 现在的浏览器花花绿绿&#xff0c;有大量的广告与信息&#xff0c;令人目不暇接。有没有一款好用的浏览器插件可以解决这个问题呢&#xff1f;我愿称WeTab为版本答案。 WeTab的界面&#xff1a; 干净又整洁。最最关键的是还有智能AI供你服务。 这个WeTabAI就像chatgp…

DB9串口引脚介绍

一、公头和母头 图片示意源于网络: 二、 每个引脚的功能定义 公头&#xff1a;所有排针式的接头&#xff08;5针朝上&#xff0c;从左到右序号依次是1~9&#xff09; 母头&#xff1a;所有插槽式的接孔&#xff08;5孔朝上&#xff0c;从右到左序号依次是1~9&#xff09; 针…

Matalab插值详解和源码

转载&#xff1a;Matalab插值详解和源码 - 知乎 (zhihu.com) 插值法 插值法又称“内插法”&#xff0c;是利用函数f (x)在某区间中已知的若干点的函数值&#xff0c;作出适当的特定函数&#xff0c;在区间的其他点上用这特定函数的值作为函数f (x)的近似值&#xff0c;这种方…

蓝桥杯每日一题2023.11.18

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 本题使用搜索&#xff0c;将每一个格子进行初始赋值方便确定是否为相邻的数&#xff0c;将空出的两个格子首先当作已经填好数值为100&#xff0c;此时从第一个格子右边的格子开始搜索&#xff…