标准库类型string和vector

news2024/12/24 13:29:22

一、命名空间

	std::cin

std就是命名空间,
这个的含义是 :编译器应该从操作符左侧的名字所示的作用域std中去寻找cin

另一种方式就是在开头显式进行说明:

using std::cin;

这样一来后续就不用再去在每条语句中显式说明了。

需要注意的是,一般在头文件中不要包含命名空间的声明,这种声明会拷贝到所有引用此头文件的文件中去,可能会导致一些不可预料的错误和冲突

二、string类型

string类型:可变长字符串;

存在于头文件:#include中,而且定义于std命名空间中。

2.1 初始化string对象

在这里插入图片描述
其实这些初始化方式主要可以分为两类:
(1)拷贝初始化
使用了一个变量去初始化了另一个变量,被初始化变量是其他变量的副本

表征的话有“=”号的都是拷贝初始化

比如:

string s2 = s1
string s3 = "value"

(2)直接初始化
直接将初始值拷贝到变量中去

比如:

string s3("value")
string s4(n, 'c')

2.2 string对象的操作

在这里插入图片描述
总共来说有这些操作,分为以下几类

2.2.1 读写操作

(1)采用数据流iostream来对string进行读写

比如:

string s1, s2;
cin>>s1>>s2;
cout<<s1<<s2<<endl;

其中cin在读取时会忽略开头的空白(空格、制表符、换行符等),在遇到下一个空白时停止,算一个string变量

(2)读取任意数量的string

string类型结束时会有一个结束符在,因此可以一直循环,直到检测到结束符为止:

string s1;
while(cin>>s1){
	cout<<s1<<endl;
}

也可以使用getline按行去读入,直到文件末尾结束。getline在进行文件读写时使用较多,主要因为这样可以保留每一行中的空白字符:

string s1;
while(getline(s, s1)){
	cout<<s1<<endl;
}

2.2.2 获取大小

使用size()函数可以返回字符串中的字符数量,使用字符数量可以分段对于字符串进行操作

此处需要注意的是size函数的返回值类型

这个地方的返回值并不是简单的int,而是string::size_type类型,这种类型的细节不需要关注,需要注意的是它是无符号的

这样一来就得避免和有符号数去混用,比如一个负数n: 判断:s.size() < n,无符号数和负数n比较几乎都是true,导致错误

同时也经常使用empty()函数来判断字符串是否为空,当字符串为空时返回true,反之false。

2.2.3 其他string对象操作

(1)比较string对象
对于两个string对象的比较可以直接采用“==”、“>”、“<“、”<=“、”>="运算符进行比较。

==会依次比较string中的每一个字符,如果长度且字符相同则返回true

比较大小主要依次比较的是字母之间的相对顺序
(2)string对象相加

string对象之间相加可以直接使用”+“号

string s1 = "hello, ", s2 = "world";
string s3 = s1 + s2;	//s3(hello, world)

而且string对象也可以直接和字面值进行相加,比如:

string s1 = "hello";
string s2 = s1 + ",";

//两个字面值不能相加,是错误的
string s3 = "hello" + ",";
string s4 = "hello" + "," + s1;
//这样则是正确的
string s4 = "hello" + s1 + ",";

(3)访问string对象
可以使用for循环依次访问

for (auto c:str){
...
}

也可以使用下标直接进行访问

三、vector

首先明确一点,vector是什么?

vector是一个类模板

模板可以看作是类或者函数编写的一份说明说。利用模板可以创建类或者函数,这就是实例化,实例化的时候需要指明类型,如:

vector<int>number;
vector<vector<string>>str;
vector<shape>sha;

vector可以容纳大多数类型的对象,但是由于引用不是对象,所以不能是引用类型。

3.1 定义和初始化vector对象

在这里插入图片描述

3.2 vector操作

在这里插入图片描述

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

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

相关文章

微信小程序实战 wx.showNavigationBarLoading(),下拉动画配置无效

文章目录前情提要原因分析实战解析最后前情提要 下拉刷新一定是移动端常用操作&#xff0c;微信小程序官方集成了下拉刷新监听函数onPullDownRefresh(),以及显示下拉动画apiwx.showNavigationBarLoading(),但是我们在初次接触这个api发现&#xff0c;调用该函数动画不显示&…

头歌-信息安全技术-Spectre侧信道攻击过程验证

头歌-信息安全技术-Spectre侧信道攻击过程验证一、第1关&#xff1a;Cache vs Memory1、编程要求2、评测代码二、第2关&#xff1a;基于FlushReload的侧信道实现1、编程要求2、评测代码三、第3关&#xff1a;Spectre预测执行1、编程要求2、评测代码四、第4关&#xff1a;Spectr…

【Unity】关于升级到2021.3.12之后URP编译错误的问题

前几天&#xff0c;我一时兴起&#xff0c;把Unity从2021.3.11 LTS 升级到 2021.3.12 LTS&#xff0c;本来以为不会有啥区别&#xff0c;然后意想不到的是&#xff0c;居然出现了编译错误&#xff1a; 我一开始以为这个就是我的工程设置有问题&#xff0c;然后我就就新…

前端面试之Vue专题

目录 前言 MVVM模式 Vue的响应式原理 路由守卫 前言 网上有许多前端八股文&#xff0c;但是缺少便于理解的说明和案例&#xff0c;需要自行查阅资料。这篇文章我就按照面试的高频题来记录自己的理解和实操。 MVVM模式 一、三者含义 M是Model&#xff0c;数据模型&#xf…

非项目活动的时间怎么跟踪?

会计、审计、合规和专业服务企业通常需要跟踪花费在项目和非项目上的时间以进行报告。员工可以使用8Manage工时表这样的工具来获取与项目和非项目任务相关的工作时间&#xff0c;并记录管理时间。 非项目时间类别确定在项目工作之外发生的不同类型的活动。你可以在工时表解决方…

【网络篇】第六篇——网络套接字编程(二)(UDP详解)

基于UDP协议的套接字程序 服务端 服务端创建套接字 服务的绑定 字符串IP VS 整数IP 运行服务器 客户端 客户端创建套接字 客户端绑定 启动客户端 本地测试 INADDR_ANY 简易的回声服务器 网络测试 基于UDP协议的套接字程序 服务端 服务端创建套接字 我们把服务…

重学Android基础系列篇(三):架构动态编程技术原理

前言 本系列文章主要是汇总了一下大佬们的技术文章&#xff0c;属于Android基础部分&#xff0c;作为一名合格的安卓开发工程师&#xff0c;咱们肯定要熟练掌握java和android&#xff0c;本期就来说说这些~ [非商业用途,如有侵权,请告知我,我会删除] DD一下&#xff1a; And…

基于形状的匹配提纲

关键&#xff1a;形状&#xff0c;其实就是canny找出来的线条集合 1&#xff0c;canny线条 2&#xff0c;模板的线条&#xff08;基于canny&#xff09; 3&#xff0c;高斯金字塔&#xff0c;加速高斯法 4&#xff0c;没有旋转和尺度时&#xff0c;匹配一个有得分的结果&am…

Linux-vim使用

目录 基本vim的基本操作&#xff1a; 命令模式&#xff1a; 光标定位&#xff1a; $&#xff1a;光标定位到行右&#xff1a; ^&#xff1a;光标定位到左&#xff1a; shiftgG&#xff1a;光标定位到底部 gg&#xff1a;回到顶部 nshiftg表示跳转光标到第n行 文本复制相关…

输入学生的信息学号、姓名、语文成绩、数学成绩、英语成绩,计算总分、并按总分成绩排序,再写到另一个txt文件中(python)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 题目&#xff1a; 代码&#xff1a; 1.提前写入标题栏&#xff08;学号、姓名、语文、数学、英语、总分&#xff09; 2.再写入学生的信息 3.读取score2.txt文件 4.…

机器学习西瓜书学习记录-第五章 神经网络

第5章 神经网络 5.1神经元模型 神经网络中最基本的成分是神经元模型。 “M-P神经元模型”&#xff0c;又称“阈值逻辑单元” 在模型中&#xff0c;神经元接收到来自n个其他神经元传递过来的输入信号&#xff0c;这些输入信号通过带权重的连接进行传递&#xff0c;神经元接收到…

分分钟让你学会栈和队列

数据结构——栈和队列 &#x1f3d6;️专题&#xff1a;数据结构 &#x1f648;作者&#xff1a;暴躁小程序猿 ⛺简介&#xff1a;双非本科大二小菜鸟一枚&#xff0c;希望我的博客可以对大家有所帮助 文章目录数据结构——栈和队列前言一、什么是栈&#xff1f;二、栈的相关概…

计算机毕设(附源码)JAVA-SSM蓟县农家乐网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

算法竞赛进阶指南 搜索 0x26 广搜变形

双端队列BFS 在最基本的广度优先搜索中&#xff0c;每次沿着分支的扩展都记为“一步”&#xff0c;我们通过逐层搜索&#xff0c;解决了求从起始状态到每个状态的最少步数的问题。这其实等价于在一张边权均为1的图上执行广度优先遍历&#xff0c;求出每个点相对于起点的最短距…

程序员的数学好难学?一切从基础开始!

数学知识对编程很有用&#xff0c;但是很多写给程序员的数学书都比较难。我们为什么不从基础的数学知识开始学习呢&#xff1f; 程序员的数学基础 Python实战 1.本书的重点不在于如何解题&#xff0c;而在于帮助读者在计算机世界里如何利用数学解决算法问题&#xff0c;让程序…

WinForm应用实战开发指南 - 教你如何实现表头的全选操作?

WinForms分页控件&#xff0c;在很多场合都需要用到&#xff0c;由于整合较多的功能操作&#xff0c;使用起来效果更好&#xff0c;界面统一性也比较一致。其中的勾选操作&#xff0c;在有些场合下&#xff0c;也是比较有用的&#xff0c;因此提供该功能的整合。 PS&#xff1…

基于改进神经网络的风电功率预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑…

【K8S系列】Kubernetes 之kubectl 常用命令汇总

目录 一、kubetcl简单介绍 二、命令介绍 详细介绍&#xff1a; 三、部分命令详细介绍 3.1 create 3.2 get 3.3 describe 3.4 rolling-update 3.5 exec 3.6 log kubectl 是 Kubernetes 自带的客户端&#xff0c;可以用它来直接操作 Kubernetes 集群。 日常在使用 Kuber…

Swift 周报 第十六期

前言 本期是 Swift 编辑组自主整理周报的第七期&#xff0c;每个模块已初步成型。各位读者如果有好的提议&#xff0c;欢迎在文末留言。 欢迎投稿或推荐内容。目前计划每两周周一发布&#xff0c;欢迎志同道合的朋友一起加入周报整理。 当你来到双水村以外的大世界&#xff…

操作系统实验二死锁避免之银行家算法的模拟

文章目录 死锁 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;死锁产生的原因 &#xff08;3&#xff09;死锁产生的必要条件 &#xff08;4&#xff09;死锁的处理策略 银行家算法 &#xff08;1&#xff09;核心思想 &#xff08;2&#xff09;数据结构 &#x…