C++(蓝桥杯常考点)
前言:这个是针对于蓝桥杯竞赛常考的C++内容,容器这些等下棋=期再讲
C++
在DEVC++中注释和取消注释的方法:ctrl+/
ASCII值(常用的):
A-Z:65-90
a-z:97-122
0-9:48-57
换行/n:10
科学计数法:eg:1e5(表示10^5)
sizeof()是用来计算数据类型长度的,返回值是size_t(无符号整数)
这个()还是加上好,里面可以是类型,变量名和表达式
里面如果是表达式的话,将不会去计算,而是返回结果类型的长度
sizeof(数组名)计算的是数组的总大小
类型的取值范围:
int是2的31次方-1或者10的9次方(大于了就会超范围)
long long是10的18次方(超过了就不行)
定义常量一般用const,定义的变量名一般用大写
取模操作符的操作数只能是整形
char类型和int类型(或char类型)加减的结果是int类型的,记得强转或者隐式转换)
(char的取值范围-128到127)
printf类型:
printf("%6.2f",0.5)表示输出字符串最小宽度是6,小数位数是2
也可以写为printf("%*.*f",6,2,0.5)
注意逻辑运算符的短路问题
switch的一个易忘用法:(switch的格式也容易忘)
switch(n%7)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf(“工作日/n”);
break;
case 6:
case 7:
printf(“休息日/n”);//这里可以搞多个语句,还不用{ }
break;
//有时还可能会用到default
}
case还可以eg:
case ‘+’:这个’+'一般是cin得到的
循环一般用for,除非需要n次循环,喜欢用while(n–){ }
并且循环条件可以用><的就不用==,不然容易错
条件判断:
对错只用执行一条语句的用三目操作符
exp1?exp2:exp3
用于判断的东西是指定的数或字符或字符串则用switch
否则就用if elseif else
cin cout和printf和scanf的取舍问题:
一般情况下用cin cout,除非:
超时和对输出格式有特殊要求
一般输入数据量大于1e6时,就用scanf和printf
continue易忘点:
for(int i = 0; i<10;i++)//continue跳过不了i++
{
if(i = 5)
continue;}
范围for常用来遍历数组
auto可以让编译器自动推导出变量的类型
如果给的小数,没有明确说明,一般auto后是double类型的
double在各编译器中的大小不同,因为一般用sizeof(double),浮点数自己一般用double类型的
有时数组从下标为1才开始放数很不错,数组空间一般多开辟10个
并且数组较大时一般搞成全局变量
易忘:int arr[][5]={{1,2},{3,4},{5,6}};则只有3行
二维数组在竞赛中很少用,一般用两个一维数组替代
字符数组一般用string替代,基本不用字符数组(string结尾不用’/0’)
读入:
遇见空白字符停止:scanf和cin可以读取空格的自己一般用getchar:
eg:
while((ch=getchar())!='\n');
如果是string的话,可以用getline,默认是遇到换行停止
在作用域优先级一样的话,库函数和自定义函数重名了的话,要么报错,要么会是自定义函数
/和\的用途:
/:
1.表除法
2.用于注释eg://
\:
1.作为转义字符eg:\n \0
2.用于续行符
字符串的比较是基于字典序进行的,比较的是对应位置上字符的ASCII值
int类型的值可以被强转为long long int的值
cout在打印浮点数时,自动忽略小数点后多余的0;
printf在打印浮点数时,小数点默认打印6位
自定义函数的传值调用:
自定义函数实参是数组就只写数组名
形参是二维数组时,行可以省略,列不可以省略
实参名字和形参名字可以相同或不同
return返回的值会被隐式变换成函数返回值所对应类型的值在自定义函数前定义全局变量可以不用传参,在竞赛中常用
注意掌握传引用调用!!!
形参顺序不同也可以构成函数重载
正整数和无符号整数的原反补码相同
负整数:
原码->取反,+1->补码
补码->取反,+1->原码
补码->-1->反码
原码->取反->反码
(这里的取反不包括符号位)但是位运算操作符在操作时,符号位也会被操作
左移操作符:<<是左边抛弃,右边取0
右移操作符:>>是左边用原该值的符号位填充,右边抛弃
按位或 | :对应的二进制对应位有1,结果就为1
按位异或 ^ :对应二进制相同为0,相异为1
按位取反 ~ :…………^运算符的特点:(常用于找唯一奇数次出现的数)
x^x = 0
0^x = x
^是支持交换律的
前提:认为最低位为第0位保留二进制位中的指定位: x&m
使m对应取出位置为1,其他位为0;则x就被保留了指定位获取二进制位中的指定位: (x>>i)&1 (这个可以用于颠倒二进制位)
获取x中的第i位,结果为0则第i位为0,结果为1则第i位为1将指定二进制位设置为1: x|m
使m对应位置(想让x哪个位置变为1)为1,其余位置为0将指定二进制位设置为0: x&=~(1<<i)反转指定二进制位: x^m
想将x的第i位反转,要令m的第i位为1,其余位置为0将二进制中最右边的1变成0: x&(x-1)
这个运算通常运用于求一个数的二进制序列中有几个1保留二进制中最右边的1,其他位置均置为0: x&-x
2的n次方:1<<n
优先级和结合性都可以用()来解决
从右到左的结合性不用考虑,自己的记法是将这个考虑在内了的eg:+=
定义struct时的;别忘了
struct
{};//不管有没有变量名,都要有此
结构体变量名字和结构体类型名字不能重合
结构体可以进行整体赋值操作
结构体嵌套如何赋值和结构体的运算符怎么重载易忘
调用和容器一样,用.
运算符重载在设置时形参一般用引用
C++中常用的头文件和其中的库函数
#include <cstdio>
printf,scanf,getchar,putchar
常用占位符:
%lld:十进制long long int类型
%f:float类型
%lf:double类型
%Lf:long double类型
%u:unsigned int类型
%c %s %d
scanf相较于printf特有的:
%[]:eg:%[a-Z]:ASCII小的在前
%c不会跳过空白字符,除非%c之前加了一个空格
scanf在使用%s时,可以%[m]s来限制读取字符串的最大长度
#include<cmath>
fabs,ceil
fabs-求浮点数绝对值
ceil-对一个浮点数向上取整
floor-对一个浮点数向下取整
sqrt-计算非负实数的算数平方根
pow(x,y)-计算x的y次方的值
#include<cstdlib>
abs-求整数的绝对值(long long int类型的用不了)
#include<cctype>
islower-判断是否为小写字母,是则返回非0;不是则返回0
tolower-将大写字母转换成小写字母
isupper-判断是否为大写字母,是则返回非0;不是则返回0
toupper-将小写字母转换成大写字母
注意事项:这四个的返回值都是int类型的,记得(char),参数可以是char的也可以是int的
isdigit-判断是否为数字字符,是则返回非0;不是则返回0
isalpha-判断是否为字母,,是则返回非0,不是则返回0
#include<string>//这里面的全都是针对string的字符串的
size()-获取字符串长度
begin()-返回指向字符串第一个字符的迭代器
end()-返回指向字符串最后一个元素的下一个位置的迭代器
//迭代器可以进行加减整数运算;想获得迭代器指向的值,则要*
push_back()-在字符串尾部插入一个元素
pop_back()-删除字符串尾部的最后一个元素
insert-在字符串中间插入一个字符串
find()-用于查找字符串中指定东西,并返回其第一次出现位置的头
//其开始查找的位置可以指定,返回值是size_t类型的,没找到则返回npos
substr-用于截取字符串中指定位置指定长度的子串有关string的函数
stoi-把数字字符串转换成int类型的
stod-把数字字符串转换成double类型的
to_string-把整数和浮点数转换成字符串
#include<algorithm>
reverse-可以逆转字符串(整形数组也可以)
max-默认返回两个值中的最大值,当然也可以改
min-默认返回两个值中的最小值,当然也可以改
sort-默认按升序来排序,当然也可以改
查询具体用法:https://legacy.cplusplus.com/reference/
#include<utility>
swap-交换两个变量或数组或容器的值
其中蕴含的算法原理
scanf返回值表示成功读取的变量个数,在没成功读取的话会返回0或EOF我们一般会通过scanf的返回值来处理未给明确多少组数据的多组数据问题,
但是一般用cin(eg:cin>>l>>m>>n没读满3个会返回false)
整数计算想变成小数的方法:
假如a b都是int类型的 可以:a*1.0/b
浮点数比较相等的办法:
eg:
fabs(a-b)<1e9
关系操作符判断为真,返回的是1
常应用于多种情况满足一种时就干啥(至少满足一种用||,全满足用&&)
eg:if((a>1)+(b>1)=1)…………
纯数字读取:读取特定位置数字的方法:
eg:读第7位
scanf("%6d%d",&a,&b);b就是
获得最后几位数字的方法:
eg:最后三位
cin>>m;
n= m%1000//n就是不纯读取:
想读特定范围内的东西(eg:A-Z)
可以边读边用ASCII筛选
反向输出每一位(整数且位数固定):
cin>>a>>b>>……;
cout<<……<<b<<a;
加减交替:
int flag=1;
for(…………)
{ sum+=b*flag;
flag=-flag;}
判断m是否为质数:
int flag =1;
for(int i = 2;i<sqrt(m);i++ )
然后看m%i是否等于0,是就break,改flag为0
for外结算:如果flag为1,则m是质数
数据在下一次读取前用完就不要了的可以采取一边读取一边使用的方法,就不存了
如果还要用并且数据多的话,可以存在数组里
统计字符出现个数的方法:建立一个128的整形数组,下标正好和字符的ASCII值对应
如果单要字母的话可以建立一个26的整形数组,把读进来的-'a'就可以得对应下标了
想输出3,5,6,7,8,9,9,10
可以先输出一个3,再,5和,6这样
求多组数据中的最大值和最小值时,可以先令min和max为取值范围的两端来搞
需要一层套一层的一般就要用递归
eg:进制转换(十进制转x进制的)
数组分块问题:
1.利用辅助数组
每次遍历把特定东西拿出来放辅助数组里2.利用双指针(这里的指针指的是用变量来代替指针)
分为eg:[0,cur][cur+1,i-1][i,n-1](带扫描看情况放哪)存非0 存0 待扫描
下期会给大家总结数据结构的内容
相关文章:
C++(蓝桥杯常考点)
前言:这个是针对于蓝桥杯竞赛常考的C内容,容器这些等下棋期再讲 C 在DEVC中注释和取消注释的方法:ctrl/ ASCII值(常用的): A-Z:65-90 a-z:97-122 0-9:48-57 换行/n:10科学计数法:eg:…...
蓝桥杯2025模拟三(01字符串)
【问题描述】 如果一个字符串中只包含字符 0 和字符 1,则称为一个 01 串(包含全为 0 的串和全为 1 的串)。 请问有多少个长度为 24 的 01 串,满足任意 5 个连续的位置中不超过 3 个位置的值为 1 。 【答案提交】 这是一道结果填空…...
EVOAGENT: Towards Automatic Multi-Agent Generation via Evolutionary Algorithms
题目 EVOAGENT:通过进化算法实现多智能体自动生成 论文地址:https://openreview.net/pdf?id05bBTmRj9s 项目地址:https://evo-agent.github.io/ 摘要 强大的大型语言模型(LLM)的出现激发了一种新的趋势,即构建基于LLM的自治代理来解决复杂的…...
Linux虚拟机网络配置-桥接网络配置
简介 本文档旨在指导用户如何在虚拟环境中配置Linux系统的桥接网络,以实现虚拟机与物理主机以及外部网络的直接通信。桥接网络允许虚拟机如同一台独立的物理机一样直接连接到物理网络,从而可以被分配一个独立的IP地址,并能够与网络中的其他设…...
使用Docker搭建Oracle Database 23ai Free并扩展MAX_STRING_SIZE的完整指南
使用Docker搭建Oracle Database 23ai Free并扩展MAX_STRING_SIZE的完整指南 前言环境准备目录创建启动Docker容器 数据库配置修改进入容器启动SQL*PlusPDB操作与字符串扩展设置配置验证 管理员用户创建注意事项总结 前言 本文将详细讲解在Docker环境中配置Oracle Database 23a…...
【UI设计——视频播放界面分享】
视频播放界面设计分享 在本次设计分享中,带来一个视频播放界面的设计作品。 此界面采用了简洁直观的布局。顶部是导航栏,包含主页、播放、搜索框等常见功能,方便用户快速找到所需操作。搜索框旁输入 “萌宠成长记”,体现了对特定内…...
SyntaxError: positional argument follows keyword argument
命令行里面日常练手爬虫不注意遇到的问题,报错说参数位置不正确 修改代码后,运行如下图: 结果: 希望各位也能顺利解决问题,祝你好运!...
【JAVA面试题】== 和 equals() 的区别与使用场景
在 Java 面试中, 和 equals() 的区别是一个高频考点。理解它们的底层原理和使用场景,对于掌握 Java 基础知识至关重要。本文将从 基本概念、底层实现 和 实际应用 三个方面,深入解析 和 equals() 的区别。 1. 基本概念 1.1 运算符 作用&a…...
Leetcode 189: 轮转数组
Leetcode 189: 轮转数组 这是一道经典问题,题目要求将一个数组向右轮转 k 个位置,有多种解法可以快速求解,既可以通过额外空间,也可以在 O(1) 的空间复杂度内完成。本题考察数组操作、双指针,以及算法优化能力。 题目…...
使用vue3+element plus 的table自制的穿梭框(支持多列数据)
目录 一、效果图 二、介绍 三、代码区 一、效果图 话不多说,先上图 二、介绍 项目需要:通过穿梭框选择人员信息,可以根据部门、岗位进行筛选,需要显示多列(不光显示姓名,还包括人员的一些基础信息&…...
Java【多线程】(2)线程属性与线程安全
目录 1.前言 2.正文 2.1线程的进阶实现 2.2线程的核心属性 2.3线程安全 2.3.1线程安全问题的原因 2.3.2加锁和互斥 2.3.3可重入(如何自己实现可重入锁) 2.4.4死锁(三种情况) 2.4.4.1第一种情况 2.4.4.2第二种情况 2.4…...
后端-Java虚拟机
Java虚拟机 Java虚拟机的组成 Java虚拟机的组成由类加载器ClassLoader、运行时数据区域(JVM管理的内存)和执行引擎(即时遍历器、解释器垃圾回收器) 类加载器加载class字节码文件中的内容到内存运行时数据区域负责管理jvm使用到…...
vue These dependencies were not found
These dependencies were not found: * vxe-table in ./src/main.js * vxe-table/lib/style.css in ./src/main.js To install them, you can run: npm install --save vxe-table vxe-table/lib/style.css 解决: nodejs执行以下语句 npm install --save vxe-t…...
Yak 在 AI 浪潮中应该如何存活?
MCP 是 Claude 发起的一个协议,在2024年10月左右发布,在2025年2月开始逐步有大批量的 AI 应用体开始支持这个协议。这个协议目的是让 AI 同时可以感知有什么工具可以用,如果要调用这些工具的话,应该是用什么样的方式。 这个 MCP 协…...
AI是否能真正理解人类情感?从语音助手到情感机器人
引言:AI与情感的交集 在过去的几十年里,人工智能(AI)的发展速度令人惊叹,从简单的语音识别到如今的深度学习和情感计算,AI已经深入到我们生活的方方面面。尤其是在语音助手和情感机器人领域,AI不…...
大语言模型学习--本地部署DeepSeek
本地部署一个DeepSeek大语言模型 研究学习一下。 本地快速部署大模型的一个工具 先根据操作系统版本下载Ollama客户端 1.Ollama安装 ollama是一个开源的大型语言模型(LLM)本地化部署与管理工具,旨在简化在本地计算机上运行和管理大语言模型…...
linux上面安装 向量数据库 mlivus和 可视化面板Attu
1. 确保docker(docker 19.0以上即可) 和 docker-compose(V2.2.2以上) 都已安装 2. 创建milvus工作目录 # 新建一个名为milvus的目录用于存放数据 目录名称可以自定义 mkdir milvus# 进入到新建的目录 cd milvus 3. 下载并编辑docker-compose.yml 在下载…...
虚拟机ip设置
打开上次安装的虚拟机,左上角编辑/虚拟网络编辑器 改地址 地址要看自己电脑情况配置,我这是学校电脑 都是配一样的 然后改虚拟网卡 改和刚刚一样的 是改ipv4 然后启动虚拟机 输入vi /etc/sysconfig/network-scripts/ifcfg-ens33 使用vi编辑器修改其中…...
用工厂函数简化redis配置
工厂函数(Factory Function)不同于构造函数,工厂函数就是一个普通函数,通常用于创建对象或实例。它的核心思想是通过一个函数来封装对象的创建逻辑,而不是直接使用类的构造函数。工厂函数可以根据输入参数动态地决定创…...
类和对象-继承-C++
1.定义 面向对象的三大特征之一,为了减少重复的代码 2.语法 class 子类 :继承方式 父类 (子类也叫派生类,父类也称为基类) 例:class age:public person; #include<iostrea…...
使用Maven搭建Spring Boot框架
文章目录 前言1.环境准备2.创建SpringBoot项目3.配置Maven3.1 pom.xml文件3.2 添加其他依赖 4. 编写代码4.1 启动类4.2 控制器4.3 配置文件 5.运行项目6.打包与部署6.1 打包6.2 运行JAR文件 7.总结 前言 Spring Boot 是一个用于快速构建 Spring 应用程序的框架,它简…...
RockyLinux 为 k8s 集群做准备
1.准备VM 镜像 开启虚拟机 选择安装 Rocky linux 9.5 软件选择最小安装就可以了 在 rocky 9 以后版本中 他全部 采用 network manager 去替换老的 network 去实现网络的管理 1.网卡配置 cat /etc/NetworkManager/system-connections/ens160.nmconnection 我们配置了两块网…...
安卓基础组件Looper - 02 native层面的剖析
文章目录 native使用使用总结创建Looper构造函数创建(不推荐)使用举例源代码 Looper::prepare 获取Looper可忽略初始化Looper主动休眠 pollAll主动唤醒 wake 发送消息 sendMessage轮询消息 native使用 Android Native Looper 机制 - 掘金 (juejin.cn) /system/core/libutils/…...
用大白话解释搜索引擎Elasticsearch是什么,有什么用,怎么用
Elasticsearch是什么? Elasticsearch(简称ES)就像一个“超级智能的图书馆管理系统”,专门帮你从海量数据中快速找到想要的信息。它底层基于倒排索引技术(类似书籍的目录页),能秒级搜索和分析万…...
机器学习的三个基本要素
机器学习的基本要素包括模型、学习准则(策略)和优化算法三个部分。机器学习方法之间的不同,主要来自其模型、学习准则(策略)、优化算法的不同。 模型 机器学习首要考虑的问题是学习什么样的模型(Model&am…...
二十三种设计模式
2 工厂方法模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通…...
Spring Boot 异步编程深入剖析
Spring Boot 异步编程深入剖析 1. 异步方法的使用 原理深度解析 Spring Boot 的异步方法基于 Spring 的 AOP(面向切面编程)实现。当在方法上添加 Async 注解时,Spring 会为该方法所在的类创建一个代理对象。当调用该异步方法时,…...
SqlSugar 语法糖推荐方式
//方式1:var dd _repository._Db.Queryable<ConfigAggregateRoot, UserRoleEntity>((o, p) > o.Id p.Id).Select((o, p) > new{o.Id,o.Remark,p.RoleId,});//方式2:不推荐使用,建议优先使用 Lambda 表达式,因为它更…...
SQL 全面指南:从基础语法到高级查询与权限控制
SQL:全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 。 一、SQL通用语法 在学习具体的SQL语句之前,先来了解一下SQL语言的同于语法。 1). SQL语句可以单行或多…...
Spring Cloud Gateway 网关的使用
在之前的学习中,所有的微服务接口都是对外开放的,这就意味着用户可以直接访问,为了保证对外服务的安全性,服务端实现的微服务接口都带有一定的权限校验机制,但是由于使用了微服务,就需要每一个服务都进行一…...
