当前位置: 首页 > news >正文

从陌生到熟练使用string类

在这里插入图片描述

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏1: 🍔🍟🌯C语言初阶
🐻推荐专栏2: 🍔🍟🌯C语言进阶
🔑个人信条: 🌵知行合一
🍉本篇简介:>:讲解C++中有关string类的使用,从构造函数到容量操作,到遍历以及增删查改和最后的运算符重载.

目录

  • 一、构造函数
  • 二、容量(`capacity`)相关的操作
    • (1)size()和length()
    • (2)resize()与reserve()
    • (3)clear()和empty()
  • 三、访问与遍历
  • 四、增删改查
    • (1)追加字符/字符串(append)
    • (2)查找(`find`)/切割(`substr`)
  • 五、运算符重载
    • `+`运算符重载与`getline()`

一、构造函数

string库的学习:传送门

在库中我们可以看到,string类的构造函数是很丰富的.

重点掌握牛牛框起来的四个哦,其他的忘记了咱可以查文档.
在这里插入图片描述
构造函数使用演示:

void test1()
{//无参构造	string();string s1; cout << "s1=  " << s1 << endl;//拷贝构造,	string (const string& str);s1 += "HELLO CSDN!!!";//下面讲,这里是为了s1里面有数据,方便拷贝构造string s2(s1);cout << "s2=  " << s2 << endl;//用另一个string类的字串初始化	string (const string& str, size_t pos, size_t len = npos);string s3(s1, 6,4);cout << "s3=  " << s3 << endl;//使用字符串进行初始化	string (const char* s);string s4("CJN Rush Rush Rush");cout << "s4=  " << s4 << endl;//string(const char* s, size_t n);string s5("CJN Rush Rush Rush",7);//不常用cout << "s5=  " << s5 << endl;//string(size_t n, char c);string s6(5, 'X');//不常用cout << "s6=  " << s6 << endl;	
}

运行结果:

s1=
s2= HELLO CSDN!!!
s3= CSDN
s4= CJN Rush Rush Rush
s5= CJN Rus
s6= XXXXX

在这里插入图片描述

二、容量(capacity)相关的操作

我们看一下库中对capacity(容量)的相关操作有哪些.
在这里插入图片描述

(1)size()和length()

其实size()length()并没有本质区别.
都是用于返回string中字符串的有效字符长度.
但是,由于string实现的比较早,当时设计的是length(),后来STL出来以后,为了统一,增加了size()接口.

	string s1;string s2("hello");//size和length并没有什么区别.cout << s1.size() << "  " << s1.length() << endl;cout << s2.size() << "  " << s2.length() << endl;

0 0
5 5

(2)resize()与reserve()

resize()用于改变字符串的有效字符长度.不够的地方用第二个参数填充.

	string s3("HELLO CSDN!!!");s3.resize(5);		//将字符串的有效字符长度改为5cout << s3 << endl;string s4("HELLO CSDN!!!");s4.resize(25,'x');	//将字符串的有效字符长度改为25,不够的地方用字符'x'填充cout << s4 << endl;

运行结果:

HELLO
HELLO CSDN!!!xxxxxxxxxxxx

resize()的改变会影响capacity(容量)吗?

	string s5("HELLO CSDN!!!");cout << "s5.capacity=" << s5.capacity() << endl;s5.resize(25, 'x');cout << "s5.capacity=" << s5.capacity() << endl;s5.resize(5, 'x');cout << "s5.capacity=" << s5.capacity() << endl;//并没有缩容

运行结果:

s5.capacity=15
s5.capacity=31
s5.capacity=31

当然,如果容量太小,不足以存储有效字符,必然是会扩容的!

扩容选择:(扩容方式是未定义的)
扩容是按有效字符长度扩容.
按之前容量的1.5倍扩容,更或者是2倍扩容.

reserve():请求改变容量的大小.

	string s6("HELLO CSDN!!!");cout << "s6.capacity=" << s6.capacity() << endl;s6.reserve(50);cout << "s6.capacity=" << s6.capacity() << endl;s6.reserve(30);cout << "s6.capacity=" << s6.capacity() << endl;//并没有缩容//一般都是不缩容的,缩容行为是未定义的.s6.clear();s6.reserve(0);cout << "s6.capacity=" << s6.capacity() << endl;//这里缩容了

s6.capacity=15
s6.capacity=63
s6.capacity=63
s6.capacity=15

是否缩容是未定义行为,取决于编译器,这里如果不清楚数据,直接将reserve(0),依旧不会缩容.

(3)clear()和empty()

	string s7;cout << s7.empty() << endl;s7 += "HELLO";cout << s7.empty() << endl;cout << "s7.size=" << s7.size() << endl;cout << "s7.capacity" << s7.capacity() << endl;s7.clear();cout << "s7.size=" << s7.size() << endl;cout << "s7.capacity" << s7.capacity() << endl;

运行结果:

1
0
s7.size=5
s7.capacity15
s7.size=0
s7.capacity15

显然clear只是清除有效字符,将字符清零,并不会影响capacity容量.

(4)小结:

  1. size()length()底层实现原理是一样的,都是返回有效的字符个数.只是为了STL的接口相统一.

  2. resize(size_t n)resize(size_t n, char c)都是将字符串中有效字符个数改变到n个,不同的是当字符个数增多时:resize(n)用0来填充多出的元素空间,resize(size_t n, char c)用字符c来填充多出的元素空间。
    注意:resize在改变元素个数时.
    (1)如果是将元素个数增多,可能会改变底层容量的大小,不然存储不了那么多有效字符.
    (2)如果是将元素个数减少,底层空间总大小不变

  3. reserve((size_t res_arg=0))函数是请求改变string的容量.
    (1)当res_arg大于当前的容量的时候,会进行扩容.
    (1)当res_arg小于当前的容量的时候,一般不会缩容.

  4. clear只是清除有效字符,将字符清零,并不会影响capacity容量.

三、访问与遍历

正向迭代器与反向迭代器:(这里对C++11的用法暂时不介绍)
在这里插入图片描述

下标访问符 方括号[ ]重载
在这里插入图片描述
示例:

void test3()
{string s1("This is a little boy");string::iterator it = s1.begin();	//s1.begin()会返回有效字符串中第个元素的位置while (it != s1.end())				//s1.end()会返回有效字符串最后一个元素的位置的后一个位置{cout << *it ;it++;}cout << endl;string::reverse_iterator rit = s1.rbegin();//反向迭代器while (rit != s1.rend())				//s1.end()会返回有效字符串最后一个元素的位置的后一个位置{cout << *rit;rit++;}cout << endl;cout << "s1.begin=" << *(s1.begin()) << endl;cout << "s1.end=" << *(s1.end()-1) << endl;		//不可直接访问s1.end(),因为不是有效字符,而是最后一个有效字符的下一个位置.cout << "s1.rbegin=" << *(s1.rbegin()) << endl;cout << "s1.rend=" << *(s1.rend()-1) << endl;	//这里为什么是+1而不是-1,留在后面的专门反向迭代器讲解//可以像数组一样用下标直接访问cout << s1[0] << endl;cout << s1[3] << endl;cout << s1[8] << endl;
}

四、增删改查

(1)追加字符/字符串(append)

在这里插入图片描述

void test4()
{string s1("hello C");cout << "s1=" << s1 << endl;//尾插一个字符s1.push_back('S');s1.push_back('D');s1.push_back('N');cout << "s1=" << s1 << endl;cout << "----------------------------------" << endl;string s2("hello C");cout << "s2=" << s2 << endl;s2.append("SDN");		//追加字符串cout << "s2=" << s2 << endl;cout << "----------------------------------" << endl;string s3("hello C");cout << "s3=" << s3 << endl;s3 += "SDN";						//最喜欢使用这个,易读也简单cout << "s3=" << s3 << endl;
}

个人感想:
push_back一次插入一个字符太麻烦了,append虽然可以追加字符串,但是终究是没有+=来的香.

其它的以assign为例,一般用不到(因为实现的有些冗余,可以用别的函数代替),实在要用查库即可:

void test5()
{string str("This is a little boy");string s1,s2,s3;s1.assign(str);s2.assign(str, 8, string::npos);s3.assign(5, 'c');cout << "s1=" << s1 << endl;cout << "s2=" << s2 << endl;cout << "s3=" << s3 << endl;
}

运行结果:

s1=This is a little boy
s2=a little boy
s3=ccccc

(2)查找(find)/切割(substr)

在这里插入图片描述

c_str:为了与C语言兼容,返回C形式的常量字符串.
find:可以查找目标字符/字符串.
string substr (size_t pos = 0, size_t len = npos) const:从pos往后len个字符,返回这段被切割的字符串的副本.

void test6()
{string s1("This is a little boy");const char* arr = s1.c_str();		//返回C形式的常量字符串cout << "arr=" << arr << endl;string s2("This is a little boy");cout << s2.find('i') << endl;		//查找目标字符cout << s2.find("little") << endl;	//查找目标字符串string s3("321xxxxxxx@qq.com");int pos1 = s3.find('@');int pos2 = s3.find(".com");string s4, s5, s6;s4 = s3.substr(0, pos1-1);			//从0位置开始,往后pos-1个字符s5 = s3.substr(pos1, s3.size() - pos2 - 1);s6 = s3.substr(pos2);				//第二个参数为往后的字符个数,不写,默认为nposcout << "s4= " << s4 << endl;cout << "s5= " << s5 << endl;cout << "s6= " << s6 << endl;
}

运行结果:

arr=This is a little boy
2
10
s4= 321xxxxxx
s5= @qq
s6= .com

五、运算符重载

小知识点:
npos是-1,只不过类型是const size_t,所以是整数的最大值,通常表示字符串的结尾或无效位置。npos定义在std命名空间中,通常用于字符串的查找操作。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

+运算符重载与getline()

void test7()
{string s1("HELLO ");string s2("CSDN");string s3;s3 = s1 + s2;		//因为是传值返回,所以效率不高,建议少用cout << s3 << endl;string name;cout << "Please, enter your full name: ";getline(cin, name);cout << "Hello, " << name << "!\n";}

比较运算符这里就不一 一介绍了,字符串按ASCII码值进行比较.

在这里插入图片描述

string类的使用还是需要多多练习,可以试着写一下相关的oj题练一下手,后续会模拟实现string类,加深对string类的理解.

string相关习题1

今天就讲到这里了,我们下次模拟实现见.
在这里插入图片描述

相关文章:

从陌生到熟练使用string类

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…...

ERP规划

ERP规划是指一个组织或企业在实施企业资源计划&#xff08;ERP&#xff09;系统之前&#xff0c;对其整体目标、需求和资源进行评估和规划的过程。以下是ERP规划的一般步骤和要点&#xff1a; 制定目标&#xff1a;明确组织对ERP系统的期望和目标&#xff0c;例如提高经营效率、…...

统计学作业啊啊啊啊

题目1 一个制药公司宣称其新药可以将病患的恢复时间从10天降至8天。为了验证这一声明&#xff0c;您从服用新药的病患中抽取了一个样本&#xff0c;发现样本均值为9天&#xff0c;样本标准差为2天&#xff0c;样本量为30。使用0.05的显著性水平进行假设检验&#xff0c;判断公…...

CAM实现的流程--基于Pytorch实现

CAM实现的流程 CAM类激活映射CAM是什么CAM与CNN CAM类激活映射 CAM是什么 可视化CNN的工具&#xff0c; CAM解释网络特征变化&#xff0c;CAM使得弱监督学习发展成为可能&#xff0c;可以慢慢减少对人工标注的依赖&#xff0c;能降低网络训练的成本。通过可视化&#xff0c;就…...

FL Studio2023最新版本21.1中文水果音乐编曲工具

虚拟乐器和真实乐器的区别&#xff1f;真实乐器指的是现实中需要乐手演奏的乐器&#xff0c;而虚拟乐器是计算机音乐制作中编曲师使用的数字乐器。FL Studio虚拟乐器插件有哪些&#xff1f;下文将给大家介绍几款FL Studio自带的强大虚拟乐器。 一、虚拟乐器和真实乐器的区别 …...

数据库概述SQL基本语法

基本概念 数据库DB database简称DB: 存储数据的仓库&#xff0c;是以某种结构存储数据的文件。指长期保存在计算机的存储设备上&#xff0c;按照一定规则阻止起来&#xff0c;可以被用户或应用共享的数据集合。 数据库管理系统DBMS 用于创建&#xff0c;维护&#xff0c;使…...

【面试】一文讲清组合逻辑中的竞争与冒险

竞争的定义&#xff1a;组合逻辑电路中&#xff0c;输入信号的变化传输到电路的各级逻辑门&#xff0c;到达的时间有先后&#xff0c;也就是存在时差&#xff0c;称为竞争。 冒险的定义&#xff1a;当输入信号变化时&#xff0c;由于存在时差&#xff0c;在输出端产生错误&…...

无涯教程-PHP - 性能优化

根据Zend小组的说明,以下插图显示了PHP 7与PHP 5.6和基于流行的基于PHP的应用程序上的HHVM 3.7。 Magento 1.9 与执行Magento事务的PHP 5.6相比&#xff0c;PHP 7的运行速度证明是其两倍。 Drupal 7 在执行Drupal事务时&#xff0c;与PHP 5.6相比&#xff0c;PHP 7的运行速度…...

如何在PHP中使用字符串

引言 字符串是由一个或多个字符组成的序列&#xff0c;可以由字母、数字或符号组成。所有的书面通信都是由字符串组成的。因此&#xff0c;它们是任何编程语言的基础。 在本文中&#xff0c;您将学习如何创建和查看字符串的输出&#xff0c;如何使用转义序列&#xff0c;如何连…...

Mybatis简单入门

星光下的赶路人star的个人主页 夏天就是吹拂着不可预期的风 文章目录 1、Mybatis介绍1.1 JDBC痛点1.2 程序员的诉求1.3 Mybatis简介 2、数据准备2.1 数据准备2.2 建工程2.3 Employee类2.4 Mybatis的全局配置2.5 编写要执行的SQL2.6 编写java程序2.7 稍微总结一下流程 3、解决属…...

【Linux】数据链路层:以太网协议

约束不等于压迫&#xff0c;冷静和理性不等于冷淡和麻木。 文章目录 一、以太网帧 和 局域网转发数据包1.局域网转发的原理&#xff08;基于以太网协议&#xff09;2.以太网MTU与MAC地址 二、局域网中的数据碰撞1.如何解决局域网中的数据碰撞&#xff1f;&#xff08;碰撞检测和…...

docker搭建私有镜像harbor

docker安装搭建私有仓库 Harbor harbor用于存储和分布docker镜像企业级registry服务器的harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。 安装harhor 启动harbor 6....

汽车便携轮胎充气泵方案

便携式充气泵是一种小巧便捷的充气工具&#xff0c;可广泛应用于汽车、自行车、摩托车、游泳圈、球类等充气产品的充气过程中。该产品以其小巧轻便、充气效率高、操作简单等特点备受消费者的青睐。 充气泵工作过程 当电动机启动时&#xff0c;通过电磁离合器将气泵内的活塞带动…...

一、Kafka概述

目录 1.3 Kafka的基础架构 1.3 Kafka的基础架构 Producer&#xff1a;消息生产者&#xff0c;就是向 Kafka broker 发消息的客户端Consumer&#xff1a;消息消费者&#xff0c;向 Kafka broker 取消息的客户端。Consumer Group&#xff08;CG&#xff09;&#xff1a;消费者组&…...

【数据结构OJ题】合并两个有序链表

原题链接&#xff1a;https://leetcode.cn/problems/merge-two-sorted-lists/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 可以先创建一个空链表&#xff0c;然后依次从两个有序链表中选取最小的进行尾插操作。&#xff08;有点类似双…...

C++ LibCurl 库的使用方法

LibCurl是一个开源的免费的多协议数据传输开源库&#xff0c;该框架具备跨平台性&#xff0c;开源免费&#xff0c;并提供了包括HTTP、FTP、SMTP、POP3等协议的功能&#xff0c;使用libcurl可以方便地进行网络数据传输操作&#xff0c;如发送HTTP请求、下载文件、发送电子邮件等…...

自然语言处理从入门到应用——LangChain:索引(Indexes)-[向量存储器(Vectorstores)]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 Vectorstores是构建索引的最重要组件之一。本文展示了与VectorStores相关的基本功能。在使用VectorStores时&#xff0c;创建要放入其中的向量是一个关键部分&#xff0c;通常通过嵌入来创建。 from langchain.embedd…...

【C++练习】普通方法+利用this 设置一个矩形类(Rectangle), 包含私有成员长(length)、 宽(width), 定义一下成员函数

题目 设置一个矩形类(Rectangle), 包含私有成员长(length)、 宽(width), 定义成员函数: void set_ len(int l); //设置长度 设置宽度void set_ wid(int w); 获取长度: int get len(); 获取宽度: int get _wid); 显示周长和面积: v…...

电子电路学习笔记之SA1117BH-1.2TR——LDO低压差线性稳压器

关于LDO调节器&#xff08;Low Dropout Regulator&#xff09;是一种电压稳压器件&#xff0c;常用于电子设备中&#xff0c;用于将高电压转换为稳定的低电压。它能够在输入电压和输出电压之间产生较小的差异电压&#xff0c;因此被称为"低压差稳压器"。 LDO调节器通…...

【LeetCode-面试经典150题-day7】

392.判断子序列 题意&#xff1a; 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是&quo…...

00-音视频-概述

有很多场合会使用的音视频&#xff0c;比如安防、视频闸机、影音播放器、视频通话&#xff0c;短视频等等。 从摄像头采集到用户观看&#xff0c;这中间涉及到了很多技术。 用户一般观看的高清视频1080P30帧。若按24位RGB对视频进行存储&#xff0c;一个60分钟视频所占空间 …...

SOFARPC(笔记)

文章目录 一、快速开始1.1 SOFARPC1.2 基于SOFABoot 二、注册中心三、通讯协议2.1 Bolt基本发布调用方式超时控制协议泛化调用序列化协议自定义线程池 2.2 RESTful基本使用 2.3 其他协议四、架构 附录 官方样例下载地址-sofa-boot-guides 可查看 SOFARPC 方式快速入门 一、快…...

无线上网连接及配置

目录 1. 无线上网连接及配置 1.1 无线路由器连接方式 ​编辑 1.2 无线路由器的基本配置 1.配置用户计算机上的IP地址 2.访问无线路由Web管理界面 1.3 WAN 口设置 1.动态 IP 2.静态 IP 1. 无线上网连接及配置 一小型公司共有20名员工。由于公司业务需要访问Internet&…...

Webpack减少打包数量和体积(Umi 3.*中)

在UMI 3.*中配置&#xff1a; export default defineConfig({chunks: [vendors, umi],chainWebpack: function (config: any, { webpack }: any) {config.plugin(chunkPlugin).use(webpack.optimize.LimitChunkCountPlugin, [{maxChunks: 5, // 必须大于或等于 1&#xff0c;此…...

python Crypto 包安装

经测试使用 pip install pycrypto安装会出现&#xff0c;如下所示错误&#xff1a; pip install pycrypto -i https://pypi.douban.com/simple/ Looking in indexes: https://pypi.douban.com/simple/ Collecting pycrypto Using cached https://pypi.doubanio.com/packages/…...

时序预测 | MATLAB实现SO-CNN-LSTM蛇群算法优化卷积长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现SO-CNN-LSTM蛇群算法优化卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现SO-CNN-LSTM蛇群算法优化卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 时序预测 | MATLAB实现SO-CNN-LSTM蛇群…...

前端开发,怎么解决浏览器兼容性问题? - 易智编译EaseEditing

解决浏览器兼容性问题是前端开发中常见的挑战之一。不同的浏览器可能对网页元素的渲染和功能支持有所不同&#xff0c;因此需要采取一些策略来确保您的网页在不同浏览器上都能正常运行和呈现。以下是一些解决浏览器兼容性问题的方法和策略&#xff1a; 使用CSS Reset&#xff…...

树莓派3B安装64位操作系统

树莓派3B安装Ubuntu MATE_树莓派3b 安装ubuntu_雨田大大的博客-CSDN博客https://blog.csdn.net/lsjackson13/article/details/92423694?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-92423694-blog-80716098.235%5Ev38%5Ep…...

Mysql系列 - 第2天:详解mysql数据类型(重点)

这是mysql系列第2篇文章。 环境&#xff1a;mysql5.7.25&#xff0c;cmd命令中进行演示。 主要内容 介绍mysql中常用的数据类型 mysql类型和java类型对应关系 数据类型选择的一些建议 MySQL的数据类型 主要包括以下五大类 整数类型&#xff1a;bit、bool、tinyint、smal…...

Linux常用的运维命令

1.查看进程按内存从大到小排序 ps -e -o "%C:%p:%z:%a"|sort -k5 -nr2.查看磁盘和分区信息 # 查看挂接的分区状态mount | column -t# 查看所有分区 fdisk -l# 查看所有交换分区 swapon -s3.查看网络信息 ifconfig # 查看所有网络接口的属性iptables -L…...

【从零学习python 】50.面向对象编程中的多态应用

文章目录 多态场景代码实现多态总结 进阶案例 多态 面向对象的三大特性&#xff1a; 封装&#xff1a;这是定义类的准则&#xff0c;根据对象的特点&#xff0c;将行为和属性抽象出来&#xff0c;封装到一个类中。继承&#xff1a;这是设计类的技巧。父类与子类&#xff0c;主…...

实现Token刷新机制

问题场景&#xff1a; 开发的项目中&#xff0c;如果正在项目中编辑信息&#xff0c;编辑信息的时间的过程中token失效可能导致信息丢失怎么办? 一、解决方法 实现Token刷新机制&#xff1a;客户端定时刷新token&#xff0c;当用户的token即将过期时&#xff0c;可以向服务器…...

FlaUi输入账号密码

FlaUI是一个用于自动化Windows桌面应用程序的开源UI自动化库&#xff0c;通常用于自动化Windows应用程序的测试和操作。如果你想使用FlaUI来输入账号和密码&#xff0c;你需要编写一些C#或其他支持.NET的编程代码来实现这一目标。以下是一个使用FlaUI来输入账号和密码的简单示例…...

ModStartBlog v8.0.0 博客归档页面,部分组件升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装会…...

使用 PyTorch 进行高效图像分割:第 4 部分

一、说明 在这个由 4 部分组成的系列中&#xff0c;我们将使用 PyTorch 中的深度学习技术从头开始逐步实现图像分割。本部分将重点介绍如何实现基于视觉转换器的图像分割模型。 图 1&#xff1a;使用视觉转换器模型架构运行图像分割的结果。 从上到下&#xff0c;输入图像、地面…...

西班牙卡瓦起泡酒的风味搭配

卡瓦是一种对食物友好的西班牙起泡酒&#xff0c;它的制作方法和香槟一样&#xff0c;可以和类似的食物搭配。卡瓦食物搭配包括各种食物&#xff0c;从海鲜和鱼到火腿&#xff0c;以及不同类型的小吃&#xff0c;也可以将卡瓦酒与甜点、水果和奶酪搭配。 卡瓦酒是世界上最著名的…...

Java项目-苍穹外卖-Day05

文章目录 1. 新增套餐1.1 需求分析和设计1.2 代码实现1.2.1 DishController1.2.2 DishService1.2.3 DishServiceImpl1.2.4 DishMapper1.2.5 DishMapper.xml1.2.6 SetmealController1.2.7 SetmealService1.2.8 SetmealServiceImpl1.2.9 SetmealMapper1.2.10 SetmealMapper.xml1.…...

取模运算符在数组下标的应用

什么是取模运算符%&#xff1f; 定义&#xff1a; a mod b&#xff0c;设a、b属于正整数且b>0&#xff0c;如果q、r属于正整数满足aq*br&#xff0c;且0≤r<b&#xff0c;则定义&#xff1a; a mod b r 注意&#xff1a;取模运算符两侧的除数和被除数都是整数&#xff…...

Firefox(火狐),使用技巧汇总,问题处理

本文目的 说明火狐如何安装在C盘之外的盘&#xff0c;即定制安装路径。如何将同步功能切换到本地服务上。默认是国际服务器。安装在C盘之后如何解决&#xff0c;之前安装的扩展无法自动同步的问题。顺带讲解一下&#xff0c;火狐的一些比较好用的扩展。 安装路径定制 火狐目前…...

耐腐蚀高速数控针阀和多功能PID控制器在流量比率控制中的应用

摘要&#xff1a;在目前的流体比值混合控制系统中&#xff0c;普遍采用的是多通道闭环PID控制系统对各路流量进行准确控制后再进行混合&#xff0c;这种控制方式普遍存在的问题是对流量调节阀的响应速度、耐腐蚀性和线性度有很高要求。为此本文提出的第一个解决方案是采用NCNV系…...

C语言:选择+编程(每日一练Day6)

目录 ​编辑选择题&#xff1a; 题一&#xff1a; 题二&#xff1a; 题三&#xff1a; 题四&#xff1a; 题五&#xff1a; 编程题&#xff1a; 题一&#xff1a;至少是其他数字两倍的最大数 思路一&#xff1a; 思路二&#xff1a; 题二&#xff1a;两个数组的交集…...

微信小程序教学系列(8)

微信小程序教学系列 第八章&#xff1a;小程序国际化开发 欢迎来到第八章&#xff01;这一次我们要谈论的是小程序国际化开发。你可能会问&#xff0c;什么是国际化&#xff1f;简单来说&#xff0c;国际化就是让小程序能够适应不同的语言和地区&#xff0c;让用户们感受到更…...

情人节定制:HTML5 Canvas全屏七夕爱心表白特效

❤️ 前言 “这个世界乱糟糟的而你干干净净可以悬在我心上做太阳和月亮。”&#xff0c;七夕节表白日&#xff0c;你要错过吗&#xff1f;如果你言辞不善&#xff0c;羞于开口的话&#xff0c;可以使用 html5 canvas 制作浪漫的七夕爱心表白动画特效&#xff0c;全屏的爱心和…...

操作系统-笔记-第五章-输入输出管理

目录 五、第五章——输入输出管理 1、IO设备的概念和分类 &#xff08;1&#xff09;IO设备分类——使用特性 &#xff08;2&#xff09;IO设备分类——传输速率 &#xff08;3&#xff09;IO设备分类——信息交换&#xff08;块、字符&#xff09; 2、IO控制器 &#x…...

感觉自己效率不高吗?学习实现目标的六个关键步骤,让你做任何事都事半功倍!

概述 是否感觉自己效率不高?做任何事情都提不起来精神?开发的时候要完成的功能很多,却不知该如何下手去做?那么你通过这篇文章可以学习到六个完成工作和学习目标的关键步骤,只要简单重复这六个步骤,就可以很轻松的达到你想做到的任何目标。是不是感觉很神奇,我也是亲测…...

【高级IO】- 五种 IO 模型 | 多路转接 - select

目录 IO的基本概念 什么是高效的IO&#xff1f; 五种IO模型 阻塞IO 非阻塞IO 信号驱动IO IO多路转接 异步IO 同步通信VS异步通信&#xff08;synchronous communication / asynchronous communication&#xff09; 同步通信VS同步与互斥 阻塞VS非阻塞 其他高级IO …...

在Linux搭建GitLab私有仓库配置实现远程访问私有仓库Gitlab ——【内网穿透】

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留…...

ChatGPT应用于高职教育的四大潜在风险

目前&#xff0c;ChatGPT还是一种仍未成熟的技术&#xff0c;当其介入高职教育生态后&#xff0c;高职院校师生在享受ChatGPT带来的便利的同时&#xff0c;也应该明白ChatGPT引发的风险也会随之进入高职教育领域&#xff0c;如存在知识信息、伦理意识与学生主体方面的风险与挑战…...

uni-app在组件中内嵌webView,实现自定义webView的大小,并处理页面中有webview时其他元素点击事件失效的问题

uni-app在组件中内嵌webView&#xff0c;实现自定义webView的大小&#xff0c;并处理页面中有webview时其他元素点击事件失效的问题 uni-app在组件中内嵌webView&#xff0c;实现自定义webView的大小 setWebviewTop() {// #ifdef APP-PLUSvar currentWebview this.$scope.$g…...

档案开发:增加查询和打卡按钮

档案开发&#xff1a;增加查询和打卡按钮 和单据开发的不同点 没有单据类型不是右击–>特性–>单据主表/单据子表&#xff0c;而是右击–>特性–>选择想要的接口访问器类型是NCVO不需要映射不是项目右键–>新建–>其他–>主子表单据结点&#xff0c;而是…...