C++ Primer学习笔记 第3章 字符串,向量和数组

3.1 命名空间的using声明

头文件不应包含using声明

因为头文件中的内容会拷贝到所有引用它的文件中去,如果头文件中有某个using声明,那么每个使用了该头文件的文件就都会有这个声明。对于某些程序来说,由于不经意间包含了一些名字,反而可能会产生名字冲突。

3.2 标准库类型string

3.2.1 定义和初始化string对象

cpp 复制代码
//初始化string对象的方式
string s1; //默认初始化,s1是一个空字符串
string s2(s1); //s2是s1的副本
string s2 = s1; //等价于s2(s1),s2是s1的副本
string s3("hiya"); //s3是该字面值"hiya"的副本,除了字符串
string s4 = "hiya"; //s4是该字符串字面值的副本
string s5(10,'c'); //s5的内容是cccccccccc

直接初始化和拷贝初始化

如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化(copy initialization) ,编译器把等号右侧的初始值拷贝到新创建的对象中去。如果不使用等号,则执行的是直接初始化(direct initialization)

cpp 复制代码
string s5 = "htht"; //拷贝初始化
string s6("htht"); //直接初始化

3.3.2 string对象上的操作

string::size_type 类型

因为某些历史原因,也为了与C兼容,所以C++语言中的字符串字面值并不是标准库类型string的对象。切记,字符串字面值与string是不同的类型。

3.2.3 处理string对象中的字符

3.3 标准库类型vector

3.3.1 定义和初始化vector

cpp 复制代码
vector<int> ivec; //初始状态为空
vector<int> ivec2(ivec); //把ivec的元素拷贝给ivec2
vector<int> ivec3 = ivec; //把ivec的元素拷贝给ivec3

列表初始化vector对象

cpp 复制代码
vector<string> v1 = {"a", "an", "the"}; //列表初始化

列表初始值还是元素数量?

相关推荐
香蕉可乐荷包蛋几秒前
Python学习之路(十三)-常用函数的使用,及优化
开发语言·python·学习
chian-ocean4 分钟前
零基础入门:用C++从零实现TCP Socket网络小工具
网络·c++·tcp/ip
岩中竹9 分钟前
广东省省考备考(第四十九天7.18)——判断推理:位置规律(听课后强化训练)
笔记
许白掰26 分钟前
Linux入门篇学习——借助 U 盘或 TF 卡拷贝程序到开发板上
linux·学习·借助 u 盘拷贝程序到开发板上·借助 tf卡拷贝程序到开发板上
珹洺1 小时前
C++算法竞赛篇:DevC++ 如何进行debug调试
java·c++·算法
Norvyn_71 小时前
LeetCode|Day18|20. 有效的括号|Python刷题笔记
笔记·python·leetcode
Y4090012 小时前
C语言转Java语言,相同与相异之处
java·c语言·开发语言·笔记
笑衬人心。2 小时前
TCP 拥塞控制算法 —— 慢启动(Slow Start)笔记
笔记·tcp/ip·php
花海如潮淹2 小时前
前端性能追踪工具:用户体验的毫秒战争
前端·笔记·ux
Andy杨3 小时前
20250718-5-Kubernetes 调度-Pod对象:重启策略+健康检查_笔记
笔记·容器·kubernetes