【C++】基础语句(学习笔记)
一、分支
1、三种基本结构
- 顺序结构
- 分支结构
- 循环结构
2、if与switch对比
1)使用场景
- switch只支持常量值固定相等的分支判断
- if可以判断区间范围
- 用switch能做的,用if都能做
2)性能比较
- 分支少时,差别不是很大。分支多时,switch性能较高
- if开始处几个分支效果高,之后效率递减
- switch所有case的速度几乎一样
二、循环
for,do…while,while …
三、自定义类型
1、枚举
使用 #define 和const 创建符号常量
使用enum不仅能够创建符号常量,还能定义新的数据类型
enum wT(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
WT weekday;
weekday = Tuesday;
2、结构体和联合体
struct Student {char name[6];int age;Score s;
}union Score {double sc;char lever;
}
3、结构体数据对齐——缺省对齐原则
对于32位CPU:
- char:任何地址
- short:偶数地址
- int:4的整数倍地址
- double:8的整数倍地址
四、函数
1、函数概述
一个C++程序是由若干个源程序文件构成,而一个源程序是由若干个函数构成,函数将一段逻辑封装起来,便于复用
2、函数的组成
- 返回类型:一个函数可以返回一个值
- 函数名称:这是函数的实际名称
- 参数:参数列表包括函数参数的类型、顺序、数量。参数是可选的
3、函数重载
函数名和参数列表一起构成了函数签名
函数名相同但参数列表不同的函数为不同函数 --> 函数重载
4、函数指针与指针函数
每个函数都占用一段内存单元,它们有个起始地址,指向函数入口地址的指针称为函数指针
int(*p)(int); //是指针,指向一个函数入口地址
int* p(int); //是函数,返回的值是一个指针
5、回调函数
int add(int a, int b) {return a + b;
}int reduce(int a, int b) {return a - b;
}void test(int a, int b, int(*pFunction)(int, int)) {cout << pFunction(a, b) << endl;
}int main() {test(10, 5, add);test(10, 5, reduce);
}
4、命名空间
命名空间作为附加信息来区分不同库中相同名称的函数、类、变量等,命名空间即定义了上下文。本质上,命名空间就是定义了一个范围
namespace rexhao {void test() {cout << "using namespace rexhao" << endl;}
}int main() {rexhao::test();return 0;
}
5、内联函数
内联函数:编译时,编译器会把该函数的代码副本放在每个调用该函数的地方
空间换时间,提高调用效率
inline int maxValue(int x,int y){return x > y ? x : y;
}
内联函数内部不能有太复杂的逻辑,编译器有时会有自己的优化策略,所以内联不一定起作用
6、递归
1)递归的四个基本法则
- 基准情形:无须递归就能解出
- 不断推进:每一次递归调用都必须使求解状況朝接近基准情形的方向推进
- 设计法则:假设所有的递归调用都能运行
- 合成效益法则(compound interest rule):求解一个问题的同一个实例时,切勿在不同的递归调用中做重复性的工作
2)递归的缺陷
递归是一种重要的编程思想,很多重要的算法都包含递归的思想
空间上需要开辟大量的栈空间、时间上可能需要有大量重复运算
3)递归的优化
- 尾递归:所有递归形式的调用都出现在函数的末尾
- 使用循环替代
- 使用动态规划,空间换时间
相关文章:
【C++】基础语句(学习笔记)
一、分支 1、三种基本结构 顺序结构分支结构循环结构 2、if与switch对比 1)使用场景 switch只支持常量值固定相等的分支判断if可以判断区间范围用switch能做的,用if都能做 2)性能比较 分支少时,差别不是很大。分支多时&…...
大厂秋招真题【DP】米哈游20230924秋招T2-米小游与魔法少女-奇运
米哈游20230924秋招T2-米小游与魔法少女-奇运 题目描述与示例 题目描述 米小游都快保底了还没抽到希儿,好生气哦!只能打会活动再拿点水晶。 米小游和世界第一可爱的魔法少女 TeRiRi 正在打 BOSS,BOSS 的血量为h,当 BOSS 血量小…...
LVS+Keepalived 高可用集群负载均衡
一.keepalived介绍 1.1.Keepalived实现原理 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务。 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态。 若当前在线的路由器失效,则其他路由器会根据设置…...
Qt QList类和QLinkedList类 详解
一、QList 类 对于不同的数据类型,QList<T>采取不同的存储策略,存储策略如下: 如果T 是一个指针类型或指针大小的基本类型(该基本类型占有的字节数和指针类型占有的字节数相同),QList<T>将数值直接存储在它的数组当…...
Mac安装GYM遇到的一些坑
以下是遇到的一些问题 安装GitHub上说的直接 pip install gym成功了,但是运行实例报错没安装gym[classic_control],所以就全安装一下[all] 安装GitHub上说的直接 pip install gym成功了,但是运行实例报错没安装gym[classic_control]ÿ…...
【高级rabbitmq】
文章目录 1. 消息丢失问题1.1 发送者消息丢失1.2 MQ消息丢失1.3 消费者消息丢失1.3.1 消费失败重试机制 总结 2. 死信交换机2.1 TTL 3. 惰性队列3.1 总结: 4. MQ集群 消息队列在使用过程中,面临着很多实际问题需要思考: 1. 消息丢失问题 1.1…...
数百个下载能够传播 Rootkit 的恶意 NPM 软件包
供应链安全公司 ReversingLabs 警告称,最近观察到的一次恶意活动依靠拼写错误来诱骗用户下载恶意 NPM 软件包,该软件包会通过 rootkit 感染他们的系统。 该恶意软件包名为“node-hide-console-windows”,旨在模仿 NPM 存储库上合法的“node-…...
SpringBoot的error用全局异常去处理
记录一下使用SpringBoot2.0.5的error用全局异常去处理 在使用springboot时,当访问的http地址或者说是请求地址输错后,会返回一个页面,如下: 这是因为请求的地址不存在,默认会显示error页面 但我们实际需要一个接口&a…...
MyBatisPlus(十一)包含查询:in
说明 包含查询,对应SQL语句中的 in 语句,查询参数包含在入参列表之内的数据。 in Testvoid inNonEmptyList() {// 非空列表,作为参数List<Integer> ages Stream.of(18, 20, 22).collect(Collectors.toList());in(ages);}Testvoid in…...
Linux命令定位与查找:which、whereis和find的用法详解
文章目录 Linux命令的定位与查找1. 简介Linux路径环境变量命令行和Shell 2. which命令which命令的作用使用which命令定位可执行文件多个可执行文件的定位which命令的选项及其使用 3. whereis命令whereis命令的作用使用whereis命令查找二进制文件查找源代码文件whereis命令的选项…...
LeetCode 面试题 17.10. Find Majority Element LCCI【摩尔投票法】简单
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
多校联测11 模板题
题目大意 给你四个整数 n , m , s e e d , w n,m,seed,w n,m,seed,w,其中 n , m n,m n,m为两个多项式 A ( x ) ∑ i 0 n a i x i A(x)\sum\limits_{i0}^na_ix^i A(x)i0∑naixi和 B ( x ) ∑ i 0 m b i x i B(x)\sum\limits_{i0}^mb_ix^i B(x)i0∑mbixi…...
Linux SSH连接远程服务器(免密登录、scp和sftp传输文件)
1 SSH简介 SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全…...
从0开始python学习-30.selenium frame子页面切换
目录 1. frame切换逻辑 2. 多层子页面情况进行切换 3. 多个子页面相互切换 1. frame切换逻辑 1.1. 子页面的类型一般分为两种 frame标签 iframe标签 1.2. 子页面里面的元素和主页面的元素是相互独立 子页面元素需要进去切换才能操作 如果已经进入子页面,那么…...
asp.net core 远程调试
大概说下过程: 1、站点发布使用Debug模式 2、拷贝到远程服务器,以及iis创建站点。 3、本地的VS2022的安装目录:C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE下找Remote Debugger 你的服务器是64位就拷贝x64的目…...
Java spring boot 一次调用多个请求
Java Spring Boot是一种基于Java编程语言的开发框架,它提供了一种快速构建高效、可伸缩和易于维护的企业级应用程序的方式。在实际的应用开发中,我们常常需要调用多个独立的请求来完成某个业务功能。然而,传统的同步方式一次只能调用一个请求…...
DRM全解析 —— CRTC详解(4)
接前一篇文章:DRM全解析 —— CRTC详解(3) 本文继续对DRM中CRTC的核心结构struct drm_crtc的成员进行释义。 3. drm_crtc结构释义 (21)struct drm_object_properties properties /** properties: property tracking …...
六个为Rust构建的IDE
Rust语言的学习曲线适中,介于高级语言和低级语言之间。这门语言既能编写系统软件,将嵌入式设备编译为x86 ARM,也可以用于前端技术,这要归功于WebAssembly。 在日渐成熟的发展中,Rust开始拥有更好的工具来提高效率。最…...
25 Python的collections模块
概述 在上一节,我们介绍了Python的sqlite3模块,包括:sqlite3模块中一些常用的函数和类。在这一节,我们将介绍Python的collections模块。collections模块是Python中的内置模块,它实现了特殊的容器数据类型,提…...
JEPG Encoder IP verilog设计及实现
总体介绍: 采用通用的常规 Verilog 代码编写,可用于任何 FPGA。 该内核不依赖任何专有 IP 内核,而是用 Verilog 编写了实现 JPEG 编码器所需的所有功能,代码完全独立。 编码器内核的输入是一条 24 位数据总线,红色像素、绿色像素和蓝色像素各有 8 位。 信号 "data_i…...
2026各个行业可以考的资格经济学专业证书
2026年经济学专业必考高含金量证书指南:CDA数据分析师领衔在数字经济时代,经济学专业人才需通过权威证书提升竞争力。2026年,数据分析、金融、审计等领域的资格证书将成为职业发展的关键筹码。本文将重点解析CDA数据分析师等热门证书的报考条…...
华为MateBook D 2018款升级Win11遇阻?手把手教你通过修改BIOS隐藏参数开启TPM2.0
华为MateBook D 2018款解锁Win11升级全攻略:深入BIOS底层参数调整实战 华为MateBook D系列作为商务本中的性价比代表,2018款用户近期在升级Windows 11时普遍遇到TPM 2.0无法启用的困扰。这台搭载第八代Intel处理器的设备其实完全具备TPM 2.0的硬件基础&a…...
物联网设备安全:硅基硬件防护方案解析
1. 物联网设备安全现状与挑战在智能家居、工业自动化、医疗监测等领域,物联网设备正以惊人的速度普及。根据IDC的调研数据,超过27%的企业在选择物联网供应商时将安全能力作为首要考量标准。然而现实情况是,大多数物联网设备仍在使用软件层面的…...
教育科技产品集成AI答疑功能的技术方案与接入实践
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 教育科技产品集成AI答疑功能的技术方案与接入实践 在在线教育领域,为学生提供即时、准确的答疑服务是提升学习体验和效…...
消息队列选型对比
目录消息队列选型对比:从核心原理到场景化决策一、快速选型:一张表看懂核心差异二、深入解读:每款 MQ 的设计哲学与适用边界2.1 RabbitMQ:灵活路由的企业级消息代理2.2 Apache Kafka:吞吐为王的日志流平台2.3 Apache R…...
开源协作平台Octopal:整合Git、文档与任务的项目管理利器
1. 项目概述:一个为开发者量身定制的开源协作平台如果你是一名开发者,或者是一个小型技术团队的负责人,那么你一定对这样的场景不陌生:手头有几个并行的项目,团队成员分散,沟通主要靠即时通讯工具ÿ…...
PyCharm专业版SSH远程开发环境一站式部署指南
1. PyCharm专业版安装与激活 作为数据科学和算法开发的主力工具,PyCharm专业版提供了完整的远程开发支持。首先需要从JetBrains官网下载对应操作系统的安装包。这里有个小技巧:如果你使用的是Windows系统但需要连接Linux服务器开发,建议选择W…...
借助PD协议分析仪洞悉Type-C充电握手全流程
1. 为什么需要PD协议分析仪? Type-C接口如今已经成为手机、笔记本等设备的标配,但很多用户都遇到过这样的尴尬:买了个第三方充电器,插上设备后要么完全没反应,要么只能以5V慢充。这背后往往是因为PD(Power …...
Pytorch图像去噪实战(八十):降级策略与熔断保护,保证高峰期服务不被大图请求拖垮
Pytorch图像去噪实战(八十):降级策略与熔断保护,保证高峰期服务不被大图请求拖垮 一、问题场景:高峰期几个大图请求,把整个服务拖慢 图像去噪服务在高峰期最怕两类请求: 超大图片 高质量模型请求 它们会占用大量 CPU/GPU 时间,导致普通小图请求也变慢。 这时如果没有…...
基于MCP协议与Playwright构建AI浏览器自动化服务器
1. 项目概述:当AI助手学会“动手”,一个浏览器自动化MCP服务器的诞生如果你和我一样,日常重度依赖Claude、Cursor这类AI编程助手,那你肯定遇到过这样的场景:你正和AI热烈地讨论一个技术方案,突然需要它帮你…...
