SYSU程设c++(第二周) string、函数重载、constexpr、auto

news2024/11/15 3:34:03

创建string对象:

string s1;  // s1 未使用初始化参数,即默认初始化为空字符串

string s2 = "c++" ; //不是赋值运算,它等价于 string s2("c++")  ,是初始化

string s3 (5, 's');  // s4 初始化为 5 s

string类实现了以下运算符的重载:

联接运算:+

比较运算:==,!=,<,<=,>,>=

赋值运算:=+=,右值可以是字符串,字符,C字符串,字符数组

整行读入字符串(包括空格):

getline(cin,str);

复习·常量指针与指针常量:

注意 const int * p1是常量指针(一个常量的指针),p1可以改,但*p1不能改(直接改可以,只是不能通过*p1改)

int * const p2是指针常量(指针是常量),p2不能改,但p2指向的值可以改

const int * const p3  则p3和*p3不能改。

函数重载:

C 语言中, 一个函数名 (以及相关形参)只能定义 一个函数
C++ 则允许 多个函数 拥有 相同的名字 ,只要它们的 参数列表不同 就可以,这就是 函数重载( Function Overloading),使用时会自动寻找适配的。

string操作:

s.length()      //返回长度,不包括结束符即之后。

s.c_str()       //返回一个c风格字符串,类型是const char* cs 常量指针

s.find(str,pos)    //从下标pos开始,寻找首个等于给定字符序列的子串。返回值为下标而非地址(c语言的strchr就返回地址)。find改成rfind 则从右边开始搜索。

s.replace(pos,count, str) : 从pos开始的count位被抹除,并用str取代,str可以比l位长或短。

append(str) :在后面增加字符串str

append(int count, char ch) 在后面增加count 个字符 ch

insert(int index, int count, char ch) :在 index 下标前面插入 count ch

insert(int index, str): index 下标前面插入 str

erase(int index, int count) :删除从下标 index 开始的 count 个字符

clear() 清空

substr(int pos, int count): 返回从下标pos开始长度为count的子串对象

compare(str) :str比较,返回 10-1之一

compare(int pos, int count, str) :从下标pos开始长度为count的子串与str比较,返回 1/0/-1

copy(str, int pos, int count): 将子串复制到目标对象str

swap(string other) :other 交换内容

const和constexpr:

因为 const 语义有两个:(一般两种意思同时具有)

1.限定为只读变量(作为函数参数时没有赋予初值,默认为只有这种意思)

 与引用结合时,const int & con_b = a;  则a值变时b仍然会变。

2.限定作为常量或字面量

C++11 标准添加键字 constexpr,限定为常量表达式,声明编译时可以对右值(函数或变量)求值,即限定为编译时可优化执行的函数

auto:

c++中auto是一个类型。一个变量如果有初始化表达式,就可以用auto代替类型声明。在编译期间根据表达式类型自动推导出对象的类型。

注意:

1.auto声明的变量必须有初始化

2.函数和模板参数不能被声明为auto

3.auto不能用于类型转换或其他一些操作,如sizeof

4.定义在一个auto序列的变量必须始终推导成同一类型

 

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

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

相关文章

可视化图表之奥妙——百分比堆叠柱状图

百分比堆叠柱状图是属于堆叠柱状图的一种&#xff0c;是指将每个柱子进行分割以显示相同类型下各个数据的占比大小情况。百分比堆叠柱形图上柱子的各个层代表的是该类别数据占该分组总体数据的百分比&#xff0c;但不适用于对比不同分组内同个分类的数据大小或者对比各分组总数…

企业邮箱对企业有哪些好处以及便捷性

企业邮箱拥有更专业的办公功能&#xff0c;更适合职场使用。同时&#xff0c;使用企业邮箱还可以帮助企业“公私分明”。一方面保护了公司信息&#xff0c;另一方面也提高了工作效率。加上公司统一邮箱也有助于提升公司形象。使用企业邮箱除了收发邮件方便外&#xff0c;还可以…

MyBatis——配置文件完成增删改查

1.首先先创建一个新的表,使用下面的sql语句 -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand (-- id 主键id int primary key auto_increment,-- 品牌名称brand_name varchar(20),-- 企业名称company_name varchar(20…

openpnp - configure - 丢弃(Discard)位置的设置

文章目录openpnp - configure - 丢弃(Discard)位置的设置概述笔记设置丢弃位置吸取元件失败后, 吸嘴一直吸气的处理ENDopenpnp - configure - 丢弃(Discard)位置的设置 概述 测试时, 吸取了一个元件, 吸取成功了, 现在想将这个料丢掉. 点击控制面板-Special页中的Discard不好…

WSN_1 介绍;部分应用介绍

学习自书籍&#xff1a;Fundamentals of Wireless Sensor Networks. WSN 介绍 传感器 从基础角度说&#xff0c;传感器观测采集现实世界的一些数据。 另一个名称是 transducer 换能器&#xff0c;指传感器将一些形式的信号转换为其他形式的信号&#xff0c;如光敏传感器 光…

华为OD机试用Python实现 -【集五福】 |老题且简单

华为OD机试题 最近更新的博客华为 OD 机试 300 题大纲集五福题目描述输入描述输出描述示例一输入输出示例二输入输出代码编写思路Python 代码最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典

进程和线程理论知识

1.进程和线程之间的联系。 进程是程序依次执行的过程&#xff0c;线程是比进程小的执行单位。 一个进程在其执行过程中可以创建多个线程。 多个线程共享进程的堆和方法区内存资源。 进程是OS进行资源分配的基本单位。 线程是OS进行调度的基本单位。 进程和线程是1&#xff1…

GPU编程实战1

给一张测试图&#xff0c;对测试图分别cpu和GPU进行处理&#xff0c;进行时间统计&#xff0c;最后做展示。 环境&#xff1a;win10 cuda11.3 python3.7 numba 等 硬件&#xff1a;cpu:i59400 ,gpu:RTX1650 4G 首先进行cuda安装&#xff0c;cuDNN等的安装&#xff0c;参考该…

和年薪30W的阿里测开工程师聊过后,才知道我的工作就是打杂的...

前几天和一个朋友聊面试&#xff0c;他说上个月同时拿到了腾讯和阿里的offer&#xff0c;最后选择了阿里。 阿里内部将员工一共分为了14个等级&#xff0c;P6是资深工程师&#xff0c;P7是技术专家。 其中P6和P7就是一个分水岭了&#xff0c;P6是最接近P7的不持股员工&#x…

720°VR全景家装设计,为传统行业注入新生命力

导语&#xff1a;VR全景家装是一种基于虚拟现实技术的新型家居装修方案&#xff0c;可以通过虚拟现实技术让用户更真实地体验家居装修效果&#xff0c;避免了传统装修中的繁琐流程和不可预知的风险。近几年来&#xff0c;VR全景装修盛行&#xff0c;打破传统二维空间模式&#…

【ArcGIS学习记录01】--利用CRU TS数据集绘制降雨量分布图

【ArcGIS学习记录01】–利用CRU TS数据集绘制降雨量分布图 注&#xff1a;仅作为本人的学习记录方便以后复习查阅。 一、介绍 CRU TS 是目前使用最广泛的气候数据集之一&#xff0c;由英国国家大气科学中心 (NCAS) 制作。简而言之我们能在CRU TS官网上获得几乎各个研究领域能…

[Java基础]—JDBC

前言 其实学Mybatis前就该学了&#xff0c;但是寻思目前主流框架都是用mybatis和mybatis-plus就没再去看&#xff0c;结果在代码审计中遇到了很多cms是使用jdbc的因此还是再学一下吧。 第一个JDBC程序 sql文件 INSERT INTO users(id, NAME, PASSWORD, email, birthday) VAL…

LeetCode 2 - 两数相加

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 开…

常用基础硬件知识 - 判断MOS管导通

目录1. 概述2. 判断MOS管的导通1. 概述 本文主要记录下基础的硬件知识&#xff0c;方便自己查阅。 2. 判断MOS管的导通 在产品硬件设计中&#xff0c;有时需要程序控制一些电源使能。 1.原理图已经标出了G极(gate)—栅极、S极(source)—源极、D极(drain)—漏极。 如果没有标…

「基础篇」机器学习概览

文章目录1. 什么是机器学习2. 引入机器学习3. 应用场景4. 机器学习分类4.1. 有无人类监督4.2. 是否增量学习4.3. 泛化方式5. 主要挑战6. 测试与验证1. 什么是机器学习 机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09;是一个研究领域&#xff0c;让计算机无需…

Mac item2 配置免密登录开发机

1、配置 vi ~/.ssh/config 内容如下&#xff1a; Host * ControlMaster auto ControlPath ~/.ssh/master-%r%h:%p ControlPersist yes ServerAliveInterval 60 学习&#xff1a; ControlMaster #连接共享 ControlPath #与ControlMaster一起使用&#xff0c;指定连接共享的路径…

log4j控制台不打印日志的故障解决方案

前言 接管了别的项目组的一个代码&#xff0c;在IDAE调试程序的过程中&#xff0c;发现log4j日志居然没有打印在控制台上&#xff0c;日志相关代码也没有问题。 在网上搜索了一圈&#xff0c;总结了一下个人解决这个问题的流程。 流程 1. 判断用了什么配置文件 不知道是出…

线程池的使用——线程池的创建方式

线程池的使用——创建线程线程池的创建线程池的创建方式Executors.newFixedThreadPool&#xff1a;Executors.newCachedThreadPool&#xff1a;Executors.newSingleThreadExecutor&#xff1a;Executors.newScheduledThreadPool&#xff1a;Executors.newSingleThreadScheduled…

24- 深度学习的模型保存和加载 (TensorFlow系列) (深度学习)

知识要点 keras 保存成hdf5文件, 1.保存模型和参数, 2.只保存参数 1.保存模型和参数 save_modelcallback ModelCheckpoint2. 只保存参数 save_weightscallback ModelCheckpoint save_weights_only True 保存模型: 案例数据: Fashion-MNIST总共有十个类别的图像model.save_w…

spark graph基础(一)

1 overView 1.1 图的构成 图由节点和边组成&#xff0c;其中VertexRDD[VD] 和EdgeRDD[ED] 继承和优化了 RDD[(VertexId, VD)] 和RDD[Edge[ED]] 。 class Graph[VD, ED] {val vertices: VertexRDD[VD]val edges: EdgeRDD[ED] }1.2 图使用示例 如下图所示&#xff0c;使用spa…