C++03 字符串、向量、数组

字符串string

一些初始化string对象的方式:

string str; //str是一个空字符串
string str1(str2); // str1是str2的副本
string str1 = str2; // 等同于str1(str2)
string str("val"); // str是"val"的副本
string str = "val"; //等价于str("val")
string str(n,'a'); //把str初始化为由连续n个字符a组成的串
  • 拷贝初始化:用 = 将一个已存在的对象拷贝到正在创建的对象
  • 直接初始化:通过()给对象赋值

string的操作:

getline(str1,str2):从str1中读取一行赋给str2,返回str2 ,读取一整行,包括空白符

str.size():返回的是string::size_type类型,是一个无符号类型的值

处理string对象中的字符:

C++版本和C版本头文件的区别:

  • C++版本:cctype
  • C版本:ctype.h 

cctype头文件中定义了一组标准函数:

isalnum(str); //当str是字母或数字时为真
isalpha(str); //当str是字母时为真
iscntrl(str); //当str是控制字符时为真
isdigit(str); //当str是数字时为真
isgraph(str); //当str不是空格但可以打印时为真
islower(str); //当str是小写字母时为真
isupper(str); //当str是大写字母时为真
tolower(str); //当str是大写字母,输出对应的小写字母;否则输出原str
toupper(str); //当str是小写字母,输出对应的大写字母;否则输出原str
  • (C++11)范围for:for(auto c : str) 遍历字符串 / for(auto &c : str)使用引用直接 改变字符串中的字符

Vector:

  • vector:容器,也是一个类模板
  • 头文件 #include<vector> 打开标准命名空间using std::vector;
  • 类模板:本身不是类,但可以实例化出一个类。vector是一个模板,vector<int>是一个类型
  • 通过将类型放在类模板名称后面的尖括号中来指定类型,如vector<int> vec;

定义和初始化vector:

vector<T> Vec; //Vec是一个空Vector,类型T,执行默认初始化
vector<T> Vec2(Vec1); //Vec2中包含有Vec1所有元素的副本
vector<T> Vec2 = Vec1; //等价 Vec2(Vec1)
vector<T> Vec(n,val); //Vec中包含了n个重复的元素,每个元素的值都是val
vector<T> Vec(n); //Vec中包含了n个重复的执行了值初始化的对象
vector<T> Vec{a,b,c....};  //Vec包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T> Vec = {a,b,c....}; //等价于Vec{a,b,c....};

 C++11 列表初始化:vector<string> v{"abc","def","qwe'};

vector支持的操作:

vec.empty(); //vec为空返回真,否则返回假
vec.size(); //返回vec中元素的个数
vec.push_back(t); //向vec的尾端添加一个值为t的元素

 迭代器iterator:

  • 所有标准库容器都可以使用迭代器
  • 类似于指针类型,迭代器也提供了对对象的间接访问

迭代器的使用:

  • vector<int> ::iterator iter
  • auto a = v.begin(); 返回指向第一个元素的迭代器
  • auto b = v.begin(); 返回指向最后一个元素的下一个的迭代器
  • 如果容器为空,begin()和end()返回的是同一个迭代器,都是尾后迭代器
  • 使用解引用符*访问迭代器指向的元素
  • 容器:可以包含其他对象;但所有的对象必须类型相同
  • 迭代器:每种标准容器都有自己的迭代器。C++倾向于用迭代器不是下标遍历元素
  • const_iterator:只能读取容器内元素,不可改变
  • 箭头运算符:item -> val 等价于 (*item).val 

标准容器迭代器的运算符:

*iter; //返回迭代器iter所指向的元素的引用
iter->val;  //等价于(*iter).val
++iter; //iter指向容器中的下一个元素
--iter; //iter指向容器中的上一个元素
iter1 == iter2; //判断两个迭代器是否相等

数组:与vector不同之处--数组长度固定

定义和初始化内置数组:

  • 初始化:char arr[buffer_size]; 长度必须是conse表达式,或者不写,让编译器自己推断
  • 数组不允许直接赋值给另一个数组

 访问数组元素:

  • 数组下标类型:size_t
  • 字符数组:结尾处有一个空字符'\0'
  • 用数组初始化vector; int arr[] = {1,2,3,4,5}; vector<int> vec(begin(arr),end(arr));

指针访问数组:在表达式中使用数组名时,名字会自动转换成指向数组的第一个元素的指针


C标准库String函数,定义在<cstring>中:

strlen(str); //返回str的长度,空字符'\0'不计算在内
strcmp(str1,str2); //比较str1和str2。如果str1 == str2,返回0str1 > str2,返回正数str1 < str2,返回负数strcat(str1,str2); //将str2附加到str1之后,返回str1strcpy(str1,str2); //将str2拷贝给str1,返回str1

指向指针的指针

  • 定义: int **p = &p1;
  • 解引用:**p; 

动态数组

  • 使用new和delete在堆区中分配存储空间
  • 定义:int *p = new int[3]; 
  • 释放:delete[] p ,不要忘记[]

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

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

相关文章

FeignClient配置

/***解释 primary 属性的含义&#xff1a;* 作为主要 Bean&#xff1a;* 当 primary 属性设置为 true 时&#xff08;默认值&#xff09;&#xff0c;Feign 代理将会被标记为主要的 Bean。这意味着&#xff0c;当存在多个同类型的 Bean 时&#xff0c;Spring IoC 容器会优先选择…

Vatee万腾平台:引领行业变革,创新未来

在当今这个快速变化的时代&#xff0c;科技的力量正在以前所未有的速度推动着行业的变革。Vatee万腾平台&#xff0c;以其独特的视角和前瞻性的布局&#xff0c;正引领着行业变革的浪潮&#xff0c;创新着未来的发展方向。 Vatee万腾平台是一家专注于科技研发和创新应用的领军企…

安装PyTorch详细过程(个人过程仅供参考)

1.安装anaconda 2.创建一个虚拟环境 以上步骤默认已经完毕&#xff0c;毕竟只是记录pytorch的安装过程 3.查看个人电脑CUDA版本 winr 输入cmd 回车 输入指令 nvidia-smi 右上角为该电脑所支持的最高CUDA版本 输入命令 nvcc -V 图中即为该电脑所安装的CUDA版本 记住该版…

struct 和 class 的异同

在C编程语言中&#xff0c;struct和class是两个定义数据类型的关键字。尽管它们看起来相似&#xff0c;但它们之间有一些关键的异同。 基本定义 struct struct是从C语言继承而来的&#xff0c;它用于定义一个结构体&#xff08;structure&#xff09;&#xff0c;结构体是由…

C++编程逻辑讲解step by step:看懂值传递的本质

值传递&#xff1a; 形参是实参的复制品&#xff0c;改变形参的值并不会影响外部实参的值。从被调用函数的角度来说&#xff0c;值传递是单向的&#xff08;实参->形参&#xff09;&#xff0c;参数的值只能传入&#xff0c;不能传出。当函数内部需要修改参数&#xff0c;并…

C# Winform按钮避免重复点击以及解决WinForm中设置Enabled=False为什么还会响应Click事件

1、C# Winform按钮避免重复点击 代码如下 btn.Enablefalse; //执行任务的函数或代码 btn.Enabletrue; 在btn.Enabletrue前添加Application.DoEvents(); 就是让应用程序的消息队列自动走完&#xff08;即在按钮为Ture前清空消息队列&#xff09;。 2、解决WinForm中设置Enabl…

利用 fail2ban 保护 SSH 服务器

利用 fail2ban 保护 SSH 服务器 一、关于 fail2ban1. 基本功能与特性2. 工作原理 二、安装与配置1. Debian/Ubuntu系统&#xff1a;2. CentOS/RHEL系统&#xff1a; 三、保护 SSH四、启动 fail2ban 服务五、测试和验证六、查看封禁的 IP 地址七、一些配置八、注意事项 作者&…

动捕系统如何解决“超出捕捉范围”的挑战

惯性运动捕捉系统改变了我们捕捉运动的方式&#xff0c;使艺术家、创作者和独立工作室能够摆脱动捕实验室和复杂设置的限制。通过身体上的传感器和无线连接&#xff0c;动捕演员可以自由移动和并作出各种高难度动作。然而具有高自由度的惯性动捕系统&#xff0c;经常面临着超出…

筛斗数据全面解析数据提取与清洗的重要性

筛斗数据全面解析数据提取与清洗的重要性 在数字化时代&#xff0c;数据是企业决策的重要依据。然而&#xff0c;数据并非总是以我们期望的形式出现&#xff0c;它们可能分散、冗余、错误甚至不完整。因此&#xff0c;数据提取与清洗成为数据处理流程中不可或缺的两个环节。筛…

数学建模 —— 矩阵的运算(上)

目录 调用函数运算 sum : 求和函数 prod : 求乘积函数(product) cumsum : 计算累积和(cumulative sum) diff : 计算差分(difference) mean : 计算平均值 (average) median : 计算中位数 mode : 计算众数 var : 计算方差 (variance) std : 计 算 标 准 差 (standard d…

Swift有什么时候是深拷贝,什么时候是浅拷贝?

Swift深拷贝、浅拷贝 Swift有一个指引用类型,它什么时候是深拷贝,什么时候是浅拷贝? 在Swift中,引用类型主要包括类(class)。与值类型(如结构体和枚举)不同,类的实例是通过引用进行传递的。这意味着,当你将一个类的实例赋值给另一个变量时,你实际上是在复制引用,…

返利App的用户行为分析与数据驱动决策

返利App的用户行为分析与数据驱动决策 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨返利App中的用户行为分析与数据驱动决策的技术细节和实…

UE5(c++)开发日志(2):向日志和屏幕输出信息/将C++类变为蓝图类

通过UE_LOG()向日志输出&#xff0c;向其传入三个参数(①输出日志类型,一般LogTemp ②具体种类&#xff0c;普通/警告/错误&#xff0c;这里是Warning ③输出的文本内容&#xff0c;使用TEXT(" ")&#xff0c;这里是TEXT("Run AActor BeginPlay")) 代码写…

找茬找不同看图猜谜语小游戏

找茬找不同看图猜谜语小游戏&#xff1a;挑战你的观察力与智慧 &#x1f50d; 挑战你的观察力&#xff1a;找茬找不同 你是否曾对两张看似相同的图片感到好奇&#xff0c;想要找出它们之间的微妙差异&#xff1f;找茬找不同小游戏正是为了满足你的这种好奇心而设计的。在这些游…

大模型相关基础知识

1. 什么是大模型&#xff1f; 大模型&#xff08;Large Models&#xff09;通常指的是具有大量参数的深度学习模型。这些模型通常基于复杂的神经网络架构&#xff0c;如Transformer&#xff0c;被用于处理各种复杂任务&#xff0c;如自然语言处理&#xff08;NLP&#xff09;、…

前端基础:CSS(篇一)

目录 css概述 CSS与HTML的关系 基本语法 行内样式表 代码 运行 内嵌样式表 代码 运行 外部样式表 代码 运行 选择器 标签选择器 代码 运行 id选择器 代码 运行 类选择器 代码 运行 选择器优先问题 通配选择器 选中所有的标签 代码 运行 选择器组…

记一次 .NET某网络边缘计算系统 卡死分析

一&#xff1a;背景 1. 讲故事 早就听说过有什么 网络边缘计算&#xff0c;这次还真给遇到了&#xff0c;有点意思&#xff0c;问了下 chatgpt 这是干嘛的 ? 网络边缘计算是一种计算模型&#xff0c;它将计算能力和数据存储位置从传统的集中式数据中心向网络边缘的用户设备、…

spring boot(学习笔记第十一课)

spring boot(学习笔记第十一课) Session共享&#xff0c;JPA实现自动RESTful 学习内容&#xff1a; Session共享JPA实现自动RESTful 1. Session共享 Session共享面临问题 spring boot默认将session保存在web server的内存里面&#xff0c;会产生什么问题呢。 如上图所示&#…

BUU CODE REVIEW 11 代码审计之反序列化知识

打开靶场&#xff0c;得到的是一段代码。 通过分析上面代码可以构造下面代码&#xff0c;获取到序列化之后的obj。 <?php class BUU {public $correct "";public $input "";public function __destruct() {try {$this->correct base64_encode(u…

【力扣 459】重复的子字符串 C++题解(子字符串+字符串匹配)

给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 示例 2: 输入: s “aba” 输出: false 示例 3: 输入: s “abcabcabcabc” 输出: true 解释: 可由子串 “…