STL--string详解

news2024/11/20 6:23:55

STL基本内容

string是什么

string实质上是一个对象

string可看作一个串,类似字符数组

可以扩容,可以增删查改

可用下表访问操作符[]引用,修改某值

构造函数

默认构造

拷贝构造:参数为(string 或 char*)

求string对象的长度不能strlen

应该size()/length()

两者作用完全相同

不过一般统一用size(与其他操作同名)

size大小不算上最后的\0

iterator

iterator实质可理解为类中的对象

运用是可理解为指针一样东西

迭代器为主流,通用方式,所有容器都可以用iterator遍历(甚至list,set也可以)

定义与使用

begin      开始位置迭代器

end       结束位置的下一位置迭代器

对应迭代器对象iterator

rbegin 

rend       倒着遍历 

此时++的逻辑与平常相反

迭代器对象为:reverse_iterator

对iterator的*可以理解为解引用,但实际是操作符重载

typeid()打印变量类型

一种很方便的遍历

所有容器都可以范围for

底层迭代器实现

for中元素被修改不会影响实参(iterator会),for实质为赋值传参

const iterator

iterator             可读可写

const_iterator   指向内容不能修改(本身可以修改)

迭代器有四种类型

const 和 reverse 相互搭配(const在前,单词间下划线链接)

sort对迭代器使用

sort直接改变原有数据: sort 实现会直接修改传入的数据序列,使其按照一定的顺序排列。这意味着原始数据会被重新排序

注意参数表示的区间左闭右开

append

append 函数通常不接受单个字符作为参数,如想尾插单个字符,最好用push_back()

总的来说,append不如+=方便

push_back()

push_back   和 pop_back     参数都只能一个字符

assign

assign属于赋值行为

insert

insert时间复杂度O(n),效率不高

insert(int pos, char* str)

注意:insert插入单个字符,要指定字符个数为1

erase

erase效率不高,和insert一样

erase(int pos=0,size=n)

传入的size可非法(过大),不会报错,有多少取多少

replace

只记一个即可

replace (int pos, int len, string str)

将原有的pos开始(包含),后的len个删了,换为str(两者大小不必相等)

capacity

capacity指的是可自由容纳的量,不带\0

capacity比实际空间少一个,那一个是\0,

g++中\0不会算入capacity

reserve

reserve用来改变capacity

用于在已知所需空间时,提前开辟空间

可能会改的比指定值大

reserve可能不会缩容

resize

resize影响size

resize(int count, char ch)

ch默认\0

只会把新增的空间赋值为ch,不变原有空间的数据

tips:

空间不能分区释放

缩容其实是另辟空间

c_str

会返回字符串首地址

 find

find(string str, pos=0)

find(string ch, pos=0)

rfind  寻找顺序相反

substr

string substr(pos, len)

从pos截取len长度

npos可理解为无限大,是GB级别的空间

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

锂电池SOH预测 | 基于SVM的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…

C语言学习/复习36

一、程序的环境与预处理 二、翻译环境与执行环境 三、运行环境 四、预编译(预处理)详解

【Hadoop】-Apache Hive使用语法与概念原理[15]

一、数据库操作 创建数据库 create database if not exists myhive; 使用数据库 use myhive; 查看数据库详细信息 desc database myhive; 数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的:/user/hive/warehouse内 创建数据库并指定hdfs…

SVN--基本原理与使用(超详细)

目录 一、SVN概述二、SVN服务端软件安装三、SVN服务端配置四、SVN客户端软件安装与使用五、SVN三大指令六、SVN图标集与忽略功能6.1 图标集6.2 忽略功能 七、SVN版本回退八、SVN版本冲突九、SVN配置多仓库与权限控制9.1 配置多仓库9.2 权限控制 十、服务配置与管理十一、模拟真…

JAVASCRIPT+PHP+GB2312字库文件实现浏览器LED滚动效果

一、效果 二、源码 1、test_led.html <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>MATRIX LED</title> <script src"https://cdn.staticfile.net/jquery/1.10.2/jquery.min.js"></script…

渗透攻击思考题

目录 问题一&#xff1a; 存储过程&#xff1a; 密文存储&#xff1a; 问题二&#xff1a; 问题三&#xff1a; 问题四&#xff1a; LM Hash的加密: NTLM Hash 的加密&#xff1a; 问题一&#xff1a; windows登录的明文密码&#xff0c;存储过程是怎么样的&#xff0…

数据聚类:Mean-Shift和EM算法

目录 1. 高斯混合分布2. Mean-Shift算法3. EM算法4. 数据聚类5. 源码地址 1. 高斯混合分布 在高斯混合分布中&#xff0c;我们假设数据是由多个高斯分布组合而成的。每个高斯分布被称为一个“成分”&#xff08;component&#xff09;&#xff0c;这些成分通过加权和的方式来构…

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start JDBC是什么意思&#xff1f; JDBC是使用java语言操作mysql数据库的规范&#xff0c;java语言必须按照这个规范写才可以操作mysql数据库。 mysql-connector-java 在最开始的时候 程序中是不允许…

深入解析AI绘画算法:从GANs到VAEs

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

蛋糕购物商城

蛋糕购物商城 运行前附加数据库.mdf&#xff08;或使用sql生成数据库&#xff09; 登陆账号&#xff1a;admin 密码&#xff1a;123456 修改专辑价格时去掉&#xffe5;以及上传专辑图片 c#_asp.net 蛋糕购物商城 网上商城 三层架构 在线购物网站&#xff0c;电子商务系统 …

Linux——终端

一、终端 1、终端是什么 终端最初是指终端设备&#xff08;Terminal&#xff09;&#xff0c;它是一种用户与计算机系统进行交互的硬件设备。在早期的计算机系统中&#xff0c;终端通常是一台带有键盘和显示器的电脑&#xff0c;用户通过它输入命令&#xff0c;计算机在执行命…

redisson分布式锁的单机版应用

package com.redis;/*** author linn* date 2024年04月23日 15:31*/ import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.…

SpringBoot 3.2.5 引入Swagger(OpenApi)

SpringBoot 3.2.5 引入Swagger&#xff08;OpenApi&#xff09; pom文件配置文件启动类Controller 层ApiFox题外话 springdoc-openapi 和 swagger 都可以用&#xff0c;用其中一个就行&#xff0c;不用两个都引入。 这里简单记录以下springdoc-openapi。 springdoc-openapi(J…

【AI相关】模型相关技术名词

目录 过拟合和欠拟合 1.过拟合 2.欠拟合 特征清洗、数据变换、训练集、验证集和测试集 1.特征清洗 2.数据变换 3.训练集 4.验证集 5.测试集 跨时间测试和回溯测试 1.跨时间测试&#xff08;OOT 测试&#xff09; 2.回溯测试 联合建模与联邦学习 1.联合建模 2.联…

用友政务财务系统FileDownload接口存在任意文件读取漏洞

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 用友政务财务系统是由用友软件开发的一款针对政府机…

OPPO手机支持深度测试+免深度测试解锁BL+ROOT权限机型整理-2024年3月更新

绿厂OPPO手机线上线下卖的都很不错&#xff0c;目前市场份额十分巨大&#xff0c;用户自然也非常多&#xff0c;而近期ROM乐园后台受到很多关于OPPO手机的私信&#xff0c;咨询哪些机型支持解锁BL&#xff0c;ROOT刷机&#xff0c;今天ROM乐园正式盘点当前市场上可以解BL刷root…

树莓派4-通过IIC实现图片循环播放

一、环境 1、树莓派4&#xff1b; 2、串口连接电脑&#xff1b; 3、树莓派由杜邦线连接0.96寸OLED1306协议 4、树莓派能够联网&#xff0c;便于安装环境。离线情况也可以安装&#xff0c;相对麻烦&#xff1b; 二、目标 1、树莓派可以开启IIC并识别已连接的IIC&#xff1b; …

机器人-轨迹规划

旋转矩阵 旋转矩阵--R--一个3*3的矩阵&#xff0c;其每列的值时B坐标系在A坐标系上的投影值。 代表B坐标系相对于A坐标系的姿态。 旋转矩阵的转置矩阵 其实A相对于B的旋转矩阵就相当于把B的列放到行上就行。 视频 &#xff08;将矩阵的行列互换得到的新矩阵称为转置矩阵。&…

4月26日 阶段性学习汇报

1.毕业设计与毕业论文 毕业设计已经弄完&#xff0c;加入了KNN算法&#xff0c;实现了基于四种常见病的判断&#xff0c;毕业论文写完&#xff0c;格式还需要调整&#xff0c;下周一发给指导老师初稿。目前在弄答辩ppt&#xff08;25%&#xff09;。25号26号两天都在参加校运会…

【蓝桥杯省赛真题38】python字符串拼接 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

目录 python字符串拼接 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python字符串拼接 第十三届蓝桥杯青少年组python编程省赛真题 一、题目…