搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家自动化
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
CasRel:深度学习中的关系抽取利器
2
利用RunnerGo数据大屏强化测试管理与决策_数据大屏测试数据
3
解决Android Studio Gradle失败的经验总结_android studio下载gradle无法连接
4
学习笔记--浅谈LoRa与LoRaWAN
5
linux——Apache服务配置及php的使用_linux httpd php
6
androidexternal目录下新增一个可执行应用及编译_android external下新增编译一个lib库
7
使用java代码对pdf进行切割_java pdf截取
8
springBoot使用poi导出Excel_excelfield
9
2018年第九届蓝桥杯国赛试题及详解(Java本科B组)_18年蓝桥杯
10
uniapp获取当前位置及检测授权状态_uniapp获取定位授权
当前位置:
article
> 正文
string类&深浅拷贝_string 深拷贝
作者:我家自动化 | 2024-04-28 10:17:21
赞
踩
string 深拷贝
目录
1 .string类
2. string类对象的常见构造
3. string类对象的容量操作
4. string类对象的修改操作
5.浅拷贝:
6.深拷贝
1 .string类
1. string是表示字符串的字符串类
2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;
4. 不能操作多字节或者变长字符的序列。
在使用string类时,必须包含<string>头文件,STL中的容器都是定义在std这个标准命名空间,因此使用的时候需要using namespace std;
2 .string类对象的常见构造
string() :构造空的string类对象,即空字符串
string(const char* s) :用C语言的字符串来构造string类对象
string(size_t n, char c) :string类对象中包含n个字符c
string(const string&s) :拷贝构造函数
string (const string& str, size_t pos, size_t len = npos);子字符串构造函数,复制从字符位置 pos 开始并跨越 len 字符的 str 部分(如果 str 太短或 len 是 string::npos,就拷贝到 str 的末尾)。
npos:
npos 是一个静态成员常量值,对于类型为 size_t 的元素,具有最大可能的值。
此常量使用值 -1 定义,因为size_t是无符号整数类型,因此它是此类型的最大可能可表示值,即无符号的oxffffffff。
3. string类对象的容量操作
size:返回字符串有效字符长度
length:返回字符串有效字符长度
size()与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一致,一般情况下基本都是用size()。
capacity:返回空间总大小
empty :检测字符串释放为空串,是返回true,否则返回false
clear:清空有效字符。
clear()只是将string中有效字符清空,不改变底层空间大小。
reserve :为字符串预留空间
例如:
void reserve (size_t newcapacity):扩容
假设:string底层空间大小为oldcapacity
当newcapacity <= oldcapacity:直接忽略oldcapacity>15
当newcapacity > oldcapacity:才会真正进行扩容---注意:reserve只改变容量,不会修改有效元素个数(1.开辟新空间2.拷贝元素3.释放旧空间4.使用新空间)
当reserve的参数小于string的底层空间总大小时,reserve不会改变容量大小
resize :将有效字符的个数该成n个,多出的空间用字符c填充
例如:
s.resize(n,ch)
如果 n 小于当前s中有效元素的个数,将s中有效元素个数减少到n个,从而删除超出 n 个字符的字符,但是总容量s.capacity()不变。
如果 n 大于当前s中有效元素的个数,将s中有效元素个数增加到n个,多出的元素使用ch来填充,在增多的过程中如果n>s.capacity(),需要扩容(按照内部的机制扩容),如果调用void resize (size_t n),则多出来的字符用空字符填充。
resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变。
所有内置类型在其之后直接跟上( )的结果都是0
3. string类对象的访问及遍历操作
operator[] :运算符[ ]的重载,返回pos位置的字符,const string类对象调用
当用 [ ]越界访问时,operator[ ]是用断言来触发的
当用at( )越界访问时,是用异常来处理的
迭代器:
迭代器的意义:像string,vector支持[ ]遍历,但是list,map等容器不支持[ ] ,迭代器是一种统一的方式
正向迭代器begin() ,end():begin()获取第一个字符的迭代器 , end()获取最后一个字符下一个位置的迭代器
string::iterator写起来比较长,可以用auto代替,让编译器自己去推演类型
const_iterator begin( ) const;只能读,不能写
逆置算法
将[first,last)区域反转
反向迭代器rbegin(), rend() :rbegin()获取最后一个字符的迭代器 ,rend()获取第一个字符的前一个位置的迭代器
范围for:C++11支持更简洁的范围for的新遍历方式
4. string类对象的修改操作
push_back:在字符串后尾插字符c
append:在字符串后追加一个字符串
operator+= :在字符串后追加字符串或者字符
c_str:返回C格式字符串
find + npos:从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置
rfind:从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置
substr:在str中从pos位置开始,截取n个字符,然后将其返回
getline:接收整行字符串(如果是接收单个字符串,直接用cin就行)
string类比较大小,可以直接用运算符,因为运算符都重载过了
算法:isalpha:检测一个字符是否时字母
算法:isalnum:检测一个字符是否是十进制数字还是大写或小写字母。
5.
浅拷贝
:
6.
深拷贝
传统写法
现代版写法
拷贝构造函数
赋值运算符重载
赋值运算符重载第二版本
浅拷贝+引用计数+写时拷贝(简易版)
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家自动化/article/detail/501735
推荐阅读
article
2
02
1-07-
02
_
类型
“
memberincomemonthlistres
”缺少
类型
“
{ time...
javase学习笔记ps:忽发奇想,把自己的学习笔记发成博客,记录下自己的成长路线,也方便日后回顾;有什么问题请多多指正...
赞
踩
article
C++
string
类
(包括深浅
拷贝
)_
c++
string
拷贝
...
目录一.字符码表一.为什么用
string
类
二.使用标准库中的
string
类
1.
string
类
2.
string
中的常用接口...
赞
踩
article
【
C++
】
--
String
深浅
拷贝
详解_
c++
string
拷贝
...
1.浅
拷贝
浅
拷贝
只需要复制原对象所有成员变量的字节序来创建一个新对象,要求该对象的所有成员变量全部都不在堆上分配空间。2...
赞
踩
article
【
C++
初阶:STL ——
string
】
string
类
| 浅
拷贝
和
深
拷贝
(传统写法和现代写法) ...
到这里我们就要学会能自己能看文档了,因为就这个
string
类
来说就有一百多个接口函数,那肯定记不住呀,我们平时用的大...
赞
踩
article
初步探索C++深浅
拷贝
_
std
:
:
string
拷贝
赋值
指定大小...
前言
std
:
:
string
拷贝
赋值
指定大小 文章目录 前言...
赞
踩
article
STL
string
模拟
实现
及
深
浅
拷贝
问题
_
set
string> a = b
深
拷贝
...
文章目录
深
浅
拷贝
问题
现代版写法的String类
string
增删查改等
实现
模拟
实现
string
类,最主要是
实现
Strin...
赞
踩
article
C++
string
类(二)及深
浅
拷贝
_
std
:
:
string
浅
拷贝
...
string
类模拟实现各类方法以及代码,以及
浅
拷贝
深
拷贝
的学习_
std
:
:
string
浅
拷贝
std
:
:
string
浅
...
赞
踩
article
泛型
编程
函数
模板
STL 深拷贝
string
类的传统和现代写法_
std
:
:
s...
1.泛型
编程
泛型
编程
:编写与类型无关的通用代码,是代码复用的一种手段。
模板
是泛型
编程
的基础。2.
函数
模板
2.1
函数
模板
概...
赞
踩
article
深入了解
string
的
深浅
拷贝
,
写时
拷贝
_
std
:
:
string
写时
拷贝
是不是
去掉了...
c++中类中有默认
的
构造函数,其中就有
拷贝
构造,默认
的
拷贝
构造按照字节进行
拷贝
,按字节
拷贝
的
问题在于:如果该空间为指针变...
赞
踩
article
c++
基础类
string
- 深浅
拷贝
,
引用
计数
, 写时
拷贝
_std
:
:
string
的
拷贝
...
string
的
深浅
拷贝
class String{public
:
// 1. 构造 String(const char ...
赞
踩
article
String
类的深
拷贝
_
std
:
:
string
深度
拷贝
方式,传递需要
拷贝
数据的长度...
每个对象自己开辟自己的空间,自己释放自己的空间class
String
{public
:
String
(char* str...
赞
踩
article
Codeforces
Round
#700 (Div. 2)-A. Yet
Another
Stri...
Codeforces
Round
#700 (Div. 2)-A. Yet
Another
String
Game
传送门...
赞
踩
article
Redis
基本
數據
結構 ―
String
...
介紹字串鍵是
Redis
中最基本的鍵值對類型,這種類型的鍵值對會在
數據
庫中把單獨的一個鍵和單獨的一個值關聯起來,被關聯的鍵...
赞
踩
article
golang
string
迭代和
结构
体
初始化
_
golang
[]
string
初始化
...
1.
golang
字符串range时返回的类型为rune在某次测试时发现,
string
字符串,直接用下标访问和用range...
赞
踩
article
【C++】STL 容器 -
string
字符串
操作 ⑤ (
string
字符串
查找
|
find
...
一、
string
字符
查找
-
find
函数
查找
字符串
1、
string
类
find
函数
原型说明2、代码示例 - 字...
赞
踩
article
flink
Unsupported
operand
types
: IF(
boolean
,
NULL
,...
结果遇到了
Unsupported
operand
types
: IF(
boolean
,
NULL
, String),根...
赞
踩
article
Python
学习笔记-
循环
结构语句_
for
char
in
str
in
g:...
for
循环
:语法格式:
for
迭代变量
in
对象:
循环
体例1:进行数值
循环
:
for
i
in
[1,2,3]: ...
赞
踩
article
String
转
JSON
Object,
JSON
Object转
JSON
Array
,
JSON
Array
数组...
// 创建
JSON
Array
,把
JSON
Object放到
JSON
Array
JSON
Array
ja = new ...
赞
踩
article
<
em
<
em>>
<
/em>java
<
/em
<
em>>
<
/em>/
<
em
<
em>>
<
/em>spring
<
/em
<
em>>
<
/em> 控制层
<
em
<
em>>
<
/em>controller
<
/em
<
em>>
<
/em>接口请求
<
em
<
em>>
<
/em>参数
<
/em
<
em>>
<
/em>为
<
em
<
em>>
<
/em>list
<
/em
<
em>>
<
/em><>和字符串
<
em
<
em>>
<
/em>String
<
/em
<
em>>
<
/em>,前...
接口请求
<
em
<
em>>
<
/em>参数
<
/em
<
em>>
<
/em>为
<
em
<
em>>
<
/em>list
<
/em
<
em>>
<
/em>和字符串
<
em
<
em>>
<
/em>String
<
/em
<
em>>
<
/em>,
<
em
<
em>>
<
/em>前端
<
/em
<
em>>
<
/em>
<
em
<
em>>
<
/em>参数
<
/em
<
em>>
<
/em>应该
<
em>怎么
<
/em>传?- 教你public Result balance (L...
赞
踩
article
Flask
SQLAlchemy
增删改查_
flask
_
sqlalchemy
db
.string d...
使用
Flask
-
SQLAlchemy
创建模型与表的映射 1. 模型需要继承自
db
.Model 2. 属性必须写成
db
....
赞
踩
相关标签
javase
java
后端
c++
数据结构
STL
string
开发语言
浅拷贝和深拷贝
string类的模拟实现
指针
内存管理
编程语言
字符串
深拷贝
引用计数
写时拷贝
String类