C++之STL-String

目录

一、STL简介

1.1 什么是STL

1.2 STL的版本

1.3 STL的六大组件

​编辑 1.4 STL的重要性

二、String类

 2.1 Sting类的简介

2.2 string之构造函数

2.3 string类对象的容量操作

2.3.1 size()

2.3.2 length()

2.3.3 capacity()

2.3.4 empty()

2.3.5 clear()

2.3.6 reserve()

2.3.7 resize()


一、STL简介

1.1 什么是STL

       STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

1.2 STL的版本

  • 原始版本
    lexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。

  • P. J. 版本
    由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。

  • RW版本
    由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。

  • SGI版本
    由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。

1.3 STL的六大组件

 1.4 STL的重要性

       STL的重要性首先就体现在刷题上面,其次就是体现在面试上,当你参加面试时面试官会经常问你一些关于STL的问题。那么废话不多说,就让我们进入对STL的学习把

二、String类

 2.1 Sting类的简介

简单来说,string类是用来对字符串进行操作的一个类,除了一些寻常的接口之外它还提供了一些专门设计用于操作单字节字符串的功能等等。

2.2 string之构造函数

我们来介绍几个常用的构造函数:

  1. 用一串字符串进行构造。
    string tmp("123456");
  2. 用一个字符进行构造。
    string tmp('1');
  3. 用一段迭代器区间进行构造。
    string tmp("123456");
    string str(tmp.begin(),tmp.end());
  4. 拷贝构造。
    string tmp("123456");
    string str(tmp);
  5. 用n个字符进行构造。
    string tmp(10.'1');

2.3 string类对象的容量操作

2.3.1 size()


其作用主要是返回有效字符的长度。

2.3.2 length()

其作用也是返回有效字符的长度。

2.3.3 capacity()

 其功能主要是返回空间的总大小。

2.3.4 empty()

其功能主要检测字符串是否为空串,是就返回true,不是就返回false。

2.3.5 clear()

其功能主要是清空字符串。

2.3.6 reserve()

其功能主要是为字符串预留空间。

2.3.7 resize()

将有效字符的个数改成n个,多出的空间用字符c填充。

注意:

  1. size()与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持

    一致,一般情况下基本都是用size()。

  2. clear()只是将string中有效字符清空,不改变底层空间大小。

  3. resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个,不同的是当字符个数增多时:resize(n)用0来填充多出的元素空间,resize(size_t n, char c)用字符c来填充多出的元素空间。注意:resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变。

  4. . reserve(size_t res_arg=0):为string预留空间,不改变有效元素个数,当reserve的参数小于string的底层空间总大小时,reserver不会改变容量大小。

     


     

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Unity】苹果(IOS)开发证书保姆级申请教程

前言 我们在使用xcode出包的时候,需要用到iOS证书(.p12)和描述文件(.mobileprovision) 开发证书及对应的描述文件用于开发阶段使用,可以直接将 App 安装到手机上,一个描述文件最多绑定100台测试设备 1.证书管理 进入网站Apple Developer &…

从虚拟化走向云原生,红帽OpenShift“一手托两家”

汽车行业已经迈入“软件定义汽车”的新时代。吉利汽车很清醒地意识到,只有通过云原生技术和数字化转型,才能巩固其作为中国领先汽车制造商的地位。 和很多传统企业一样,吉利汽车在走向云原生的过程中也经历了稳态业务与敏态业务并存带来的前所…

视频美颜SDK原理与实践:从算法到应用

当下,从社交媒体到视频通话,人们越来越依赖于视频美颜功能来提升自己的形象。而视频美颜SDK作为支撑这一技术的重要工具,其原理和实践至关重要。 一、什么是视频美颜SDK? 视频美颜SDK是一种软件开发工具包,用于集成到…

FloodFill算法---DFS

目录 floodfill算法概念: 算法模板套路: 例题1:图像渲染 例题2:岛屿数量 例题3:岛屿的最大面积 例题4:被围绕的区域 floodfill算法概念: floodfill算法是一种常用的图像处理算法&#xf…

【IDEA】在IntelliJ IDEA中导入Eclipse项目:详细指南

IntelliJ IDEA和Eclipse是两款常用的集成开发环境(IDE),在软件开发中经常会遇到需要在它们之间迁移项目的情况。本文将重点介绍如何在IntelliJ IDEA中导入Eclipse项目,以帮助开发者顺利地迁移他们的项目,并在IntelliJ …

云主机修复监控插件异常的方法

首先,进入云监控服务--选择主机监控,勾选上网络配置异常的云主机,最上面的修复插件配置,然后等待大约半个小时多,再观察下主机的状态。 一般情况下问题都可以被解决,如果解决不了,可以尝试卸载…

剑指 Offer 03.:数组中重复的数字

剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。…

Linux下的进程管理:创建、终止、切换与等待

文章目录 一、引言二、进程创建1、进程创建的概念与场景2、进程创建的方式a、fork() 系统调用b、fork() 后的执行流程 3、进程创建的过程a、进程创建过程b、子进程创建过程 4、父子进程关系与属性继承 三、进程终止1、进程终止的原因2、进程的错误码和退出码a、错误码b、退出码…

Golang基础5-指针、结构体、方法、接口

指针 和c/c类似,但是go语言中指针不能进行偏移和运算,安全指针 &(取地址) *(根据地址取值) nil(空指针) make和new之前对比:make用于初始化slice,map,channel这样的引用类型 而new用于类…

热知识:更多团队采用3个及以上内部开发者平台

01 介绍 根据 Perforce Puppet 的一份新报告中,平台工程的采用已经在一些企业内看到了成效,78% 的受访者表示他们的组织拥有专门的平台团队至少三年了。 然而,这并不意味着这些组织只使用同一套工具。四分之三的调查参与者表示,他…

如何使用SOLIDWORKS添加装饰螺纹线规格

在我们的设计过程中,有很多的时候螺纹规格在机械设计手册上没有,而我们的SOLIDWORKS软件里面录制的都是符合标准的的螺纹,至于其他的特种或者超出的规格需要我们设计人员去手工添加,以下介绍我们装饰螺纹线新规格的添加方法&#…

关于PMO卓越中心职能建设的实践与思考︱PMO大会

全国PMO专业人士年度盛会 浪潮电子信息产业股份有限公司PMO时军先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“让组织持续卓越——关于PMO卓越中心职能建设的实践与思考”。大会将于5月25-26日在北京举办,敬请关注! …

菜单访问url/接口url为什么要带时间戳

一, 问题 1,菜单url中如果不加时间戳,会导致什么问题。我们现在做一个东西,需要获取菜单的访问地址,我们要拼这个地址 2,查询接口中,时间戳,如果不加,具体导致什么问题 二…

Vue集成three.js,加载glb、gltf类型的3d模型

安装基本依赖 // 注意OrbitControls要加{},注意路径是jsm import { OrbitControls } from ‘three/examples/jsm/controls/OrbitControls.js’; // import { dat } from ‘three/examples/jsm/controls/dat.gui.js’; // dat gui这个插件,是另外自己下载…

杰理使用USB声卡模式时关闭MIC

杰理在使用PC模式的时候,想只保留扬声器,但不要打开MIC功能,可以配置USB_DEVICE_CLASS_CONFIG中把MIC_CLASS去掉,然后重新编译就可以了。

Kimi 高效使用技巧,80%的人都不知道

关注我, AI 学习之旅上,我与您一同成长! 一、引言 Kimi 作为国产之光,在过去的一个多月里成为国内大模型的香饽饽。据数据分析,Kimi 网页、APP、小程序等各端的日活已经突破 300 万,超过文心一言、通义千问、智谱清言…

单链表实现通讯录

不过多赘述了 顺序表的增删查改-CSDN博客https://blog.csdn.net/bkmoo/article/details/137566495?spm1001.2014.3001.5502 使用顺序表实现通讯录-CSDN博客https://blog.csdn.net/bkmoo/article/details/137676561?spm1001.2014.3001.5502这里没有使用文件操作只是简单的使…

6.MMD ray渲染 材质的添加及打光方法

材质 前置准备 先准备好模型和场景 将ray控制器拖入进去 添加完默认的材质以后的效果 打开插入材质页面 打开MaterialMap栏 将流萤的模型展开 自发光 现在给领带添加一个自发光效果 在自发光Emissive里,打开x1,选择albedo,白光 现在…

使用微软Phi-3-mini模型快速创建生成式AI应用

微软Phi-3大语言模型是微软研究院推出的新一代系列先进的小语言模型。Phi-3系列包括phi-3-mini、phi-3-small和phi-3-medium三个不同规模的版本。这些模型在保持较小的参数规模的同时,通过精心设计的训练数据集和优化的算法,实现了与大型模型相媲美的语言…