数据结构——结构体位域、typedef类型重定义、宏、共用体union、枚举、虚拟内存划分
一、结构体位域
1.1 结构体位域的基础
结构体位域:把结构体字节大小扣到极致的一个类型,以bit单位
格式:struct 位域体名{数据类型 位域名:位域大小;数据类型 位域名:位域大小;...};解析:位域体名:可有可无,满足命名规范数据类型:只能是整数(char\short\int\long\long long)位域名:可有可无,如果不屑,则默认该位不可以使用,结果位0位域大小:不可以大于数据类型的总位值eg:struct A{int a:10;int b:20;char c:6;... };struct B{int a:10;int :20; //20位不可以使用,默认是0char c:6;... };
1.2 结构体位域的大小
1.结构体位域的各个数据类型一致,且总和小于最宽数据类型的字节大小分配字节单位是以最宽数据类型字节大小分配struct A{int a:2;int b:3;int c:20; };结构体分配最宽成员的字节大小,int---->32a:2 剩余30bit, b:3 剩余27 c:20 剩余7位共4字节2.结构体位域的各个数据类型一致,且总和大于最宽数据类型的字节大小不可以跨字节存储struct B{int a:20;int b:23;int c:7; };最宽数据类型int--->32bita:20 剩余12, b:23不够存储,则需要重新申请4字节存储bb:23 剩余9 c:7 剩余2共8字节3.结构体位域的各个数据类型不一致,且总和大于最宽数据类型的字节大小struct C{char a:7;short b:15;int c:30;long d:20;long long e:53;};最宽long long -->8字节---》64bita:7 剩余57 b:15:42 c:30 剩余12 d:20 重新8字节, 剩余44 e:53 重新申请8字节 共24字节
1.3 结构体位域的使用
struct C{char a:7; -2^6 2^6-1short b:15; -2^14 2^14-1int c:30; -2^29 2^29-1unsigned long d:20;long long e:53;};struct C num={128,20,30,40,50};printf("%d",num.a);char -128,127char a=128 --->a=-128char b=129 --->b:-127char c=130 --->c:-126如果数据在赋值时出现数据溢出,则会从最大值到最小值上
二、typedef类型重定义
typedfef: 类型重定义
格式: typedef 数据类型 别名;
1.typedef: 类型重定义
2.数据类型:基类型,构造类型,空类型,指针类型
3.别名:满足命名规范
size_t 在64操作系统unsigned long 32操作系统unsigned int
typedef int size_4; //把int起别名size_4 int--->sise_4
int a;--->size_4 a;
typedef unsigned long size_t;
typedef unsigned int size_t;
int age;char name[100];
}p_t;方式1:
struct Person a;
typedef struct Person p_t; //struct Person起别名p_t
p_t a;int a;
int arr[2];
int *p;typedef int a,arr[2],*p; a-->int arr-->int[2] p-->int*typedef int a;
typedef float a;
C语言变量
int a;
int arr[3];
int arr[2][3];
int* p;
int** p;
int (*p)[3];
int *p[3]
int (*p)();
int *p()
C类型
int ;
int [3];
int [2][3];
int* ;
int** ;
int (*)[3];
int *[3]
int (*)();
int *()
typedef和类型的结合
typedef int a_t;//a_t类型别名,表示int
typedef int arr_t[3] ;//arr_t类型别名,表示int [3]int arr[3]--->arr_t b;
typedef int arr_t[2][3];
typedef int* p_t;
typedef int** p_t;
typedef int (*p_t)[3];
typedef int *p_t[3]
typedef int (*fun_t)();
typedef int *fun_t();eg:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{typedef int size_4;size_4 a=100;printf("a=%d\n",a);typedef int arr_t[2][3];//arr_t等价int [2][3];arr_t b={1,2,3,4,5,6};for(int i=0;i<2;i++){for(int j=0;j<3;j++)printf("%d\t",b[i][j]);putchar(10);}return 0;
}
三、宏
宏:宏只做替换,不做计算,不做正确性的检测
宏发生在预处理阶段
3.1 简单宏
格式:#define 宏名 宏体
1.#define 定义宏
2.宏名:满足命名规范,一般大写
3.宏体:默认时字符串
4.宏是没有类型,不需要在最后加;宏不是C语句
5.宏默认是全局,一般定义在主函数的上面
#define A 100
#deifne PAI 3.14
#define CH 'a'
#define STRING "hello"
#define size_4 int size_4的值int
3.2 宏函数
3.2.1 自定义宏函数
1.({})
格式:
#define 宏函数名(参数列表) ({C语句1;C语句2...C语句n})
解析:
1.参数列表:没有数据类型,多个参数之间使用逗号隔开
2.({}):当C语句只有一条时默认可以省略不写
3.({}): 默认存在返回,返回最后一个表达式
4.宏体建议只写一行,换行需要使用\链接父,进行连接eg:使用宏计算两个数的最大值
#define MAX1(x,y) x>y?x:y#define MAX(x,y) ({int max;\if(x>y)\max=x;\else \max=y;\max;})
int main(int argc, const char *argv[])
{int a=11,b=22;int max=MAX(a,b);a>b?a:b;printf("max=%d\n",max);printf("max1=%d\n",MAX1(a,b));return 0;
}
2. do{}while(0)
格式:#define 宏函数名(参数列表) do{C语句1;C语句2....}while(0)
1.参数列表:没有数据类型,多个参数之间使用逗号隔开
2.do{}while(0) 后面不加分号
3.默认不存在返回
4.宏体建议只写一行,换行需要使用\连接符,进行连接
eg:使用宏计算两个数的最大值
#define MAX(x,y) do{if(x>y)printf("%d",x);else printf("%d",y);}while(0)
3.2.2 系统自带的宏函数
1.判断宏是否为真,多用注释#if 宏名C语句1;#endif
执行过程:如果宏为真,则执行C语句,否则跳过
2.宏的双分支#if 宏名C语句1;#elseC语句2;#endif
执行流程:如果宏为真则执行C语句1,否则执行C语句2
3.宏的多分支#if 宏名1C语句1;#elif 宏名2C语句2;....#elseC语句n;#endif
执行流程:如果宏1为真则执行C语句1,结束如果宏1为假,则判断宏2,如果宏2为真,则执行C语句2,结束以此类推
4.判断宏已经定义#ifdef 宏C语句1;C语句2;#endif
执行流程:判断宏已经定义了,如果定义了,则执行C语句
5.判断宏没有定义#ifndef 宏C语句1;#endif
执行流程:判断宏没有定义了,如果没有定义,则执行C语句
6.判断多个宏已经定义#if defined(宏1) &&defined(宏2)C语句1;#endif
执行流程:判断宏已经定义了,如果定义了,则执行C语句
7.判断多个宏没有定义#if !defined(宏) #if undefined==宏C语句1;#endif
执行流程:判断宏没有定义了,如果没有定义,则执行C语句
8.# 把宏体转换为字符串#define FUN(a) #a
9,## 连接#define FUN(a,b) a##b
#讲解案例:
##的讲解案例:
3.2.3 多文件编译
1.头文件:预处理命令,全局变量,头文件,函数生命
2.main函数
3.自定义函数
#include <>: 默认在系统库中查找头文件 库路径是/usr/include/
#include "":现在当前目录下查找头文件,找不到则在系统库中查找
3.3 宏和typedef之间的区别
1.宏发生在预处理阶段,typedef 编译阶段
2.宏不是C语句,typedef是C语句
3.宏属于替换,typedef类型重定义
4.宏只能做基类型的简单替换,typedef可以重定义任何类型
typedef int size_4 typedef int arr[2]
#define size_4 int
四、共用体union
4.1 认识共用体的格式
union 共用体名
{数据类型 变量名;数据类型 变量名;····
}; //定义了一个结构体类型
4.2 共用体的地址
各个成员变量共享同一片空间
共用体字节大小等于最宽成员的字节大小,满足字节对齐原则
4.3 共用体的使用
1.当没有指定成员时,默认给第一个成员赋值
typedef union A
{int a;char b;float c;
}A_t;
A_t num={100}; 默认给第一个成员a赋值
2.指定成员赋值
A_t num2={.c=3.14};
3.定义变量后赋值
A_t num3;
num3.a=100;
num3.b='a';
num3.c=3.14
此时最终结果是最后一次赋值的结构
4.4 使用union解决大小端存储
typedef union A
{int a;char b;
}A_t;
A_t num={0x12345678}
if(num.b==0x78)printf("little\n");
elseprintf("big\n");
五、枚举
5.1 枚举的概念
枚举:防止魔鬼数字
枚举:列举所有集的有序序列的常量集合
枚举属于基类型
#define A 1
#define B 2
#define C 3
enum 枚举名
{变量名1,变量名2,....
};
1.enum:枚举关键字
2.枚举名:满足命名规范
3.变量名:没有数据类型,类型是自定义的枚举类型 enum 枚举名
5.2 枚举的使用
1.默认没有赋值
enum NUM
{A,B,C A默认结果是0,后面的一次递增
};
printf("A=%d\n",A);
2.指定赋值
enum NUM
{A,B=50,C A默认结果是0,B=50 C=51
};
enum NUM
{A=20,B=50,C=31 A默认结果是20,B=50 C=31
};
3.枚举变量
enum NUM
{A=20,B=50,C=31 A默认结果是20,B=50 C=31
};
enum NUM a=100; //a是枚举变量,可以修改,ABC成员不可以修改
六、虚拟内存划分
相关文章:
数据结构——结构体位域、typedef类型重定义、宏、共用体union、枚举、虚拟内存划分
一、结构体位域 1.1 结构体位域的基础 结构体位域:把结构体字节大小扣到极致的一个类型,以bit单位 格式:struct 位域体名{数据类型 位域名:位域大小;数据类型 位域名:位域大小;...};解析:位域体名:可有可无ÿ…...
git bash删除库中的分支与文件
一、 在 GitHub 上删除非 main 分支的步骤可以分为两部分:首先在本地删除该分支,然后在 GitHub 上删除远程分支。以下是详细的步骤: 1. 删除远程分支(在 GitHub 上删除) 打开 GitHub 仓库页面,进入你的仓…...
连锁收银系统的核心架构与技术选型
在连锁门店的日常运营里,连锁收银系统扮演着极为重要的角色,它不仅承担着交易结算的基础任务,还关联着库存管理、会员服务、数据分析等多个关键环节。一套设计精良的核心架构与合理的技术选型,是保障收银系统高效、稳定运行的基础…...
称呼计算器:智能科技,简化您的计算生活
一款手机应用程序,安卓设备上使用。这款计算器应用以其简洁的界面、实用的功能和良好的用户体验而受到用户的喜爱。 计算器的主要特点包括: 基本计算功能:支持加、减、乘、除等基本运算。 科学计算器模式:提供更高级的数学运算功…...
qt的QMainWindow保存窗口和恢复窗口状态
保存窗口状态 QSettings settings("MyCompany", "MyApp"); // 指定存储的应用信息 settings.setValue("mainWindowState", saveState());saveState() 返回一个 QByteArray,包含 所有停靠窗口和工具栏的状态。QSettings 用于存储数据…...
【mysql】记一次mysql服务挂了后的数据恢复过程
现象 服务器异常,导致mysql服务异常退出,重启后,校验redo log异常 说明 mysql服务是通过docker-compose启动的,serviceName是db磁盘挂载:/var/lib/mysql挂载到本地磁盘/data/mysql 处理过程 备份 查看磁盘挂载列表 docker …...
使用 LangChain 对接硅基流动(SiliconFlow)API:构建一个智能对话系统
文章目录 什么是硅基流动(SiliconFlow)?LangChain 简介在 LangChain 中对接硅基流动步骤 1:安装必要的库步骤 2:设置 API 密钥步骤 3:编写代码代码解析步骤 4:运行代码如何扩展和改进总结 在现代…...
K8s 证书认知(K8s Certificate Awareness)
K8s 证书认知 在谈起 Kubernetes 证书时,总感觉其涵盖的内容繁多,仿佛千头万绪,让人不知该从何处着手阐述。为了更好地理清思路,本文将对相关内容进行系统的梳理和记录。 1、证书及链路关系 Kubeadm部署的集群,K8s …...
iperf
iperf 是一个网络性能测试工具,用于测量TCP和UDP的网络带宽。-c 参数表示客户端模式,用于指定要连接的服务器地址。以下是一些常见的 iperf 客户端命令示例: 基本用法 iperf -c <server_ip> <server_ip>:服务器的IP…...
【FastAPI 使用FastAPI和uvicorn来同时运行HTTP和HTTPS的Python应用程序】
在本文中,我们将介绍如何使用 FastAPI和uvicorn来同时运行HTTP和HTTPS的 Python应用程序。 简介 FastAPI是一个高性能的Web框架,可以用于构建快速、可靠的API。它基于Python的类型提示和异步支持,使得开发者可以轻松地编写出安全且高效的代…...
Windows系统安装搭建悟空crm客户管理系统 教程
1、在安装悟空 CRM 之前,需要确保你的 Windows 系统上已经安装了以下软件: Web 服务器:推荐使用 Apache 或 Nginx,这里以 Nginx 为例。你可以使用集成环境套件如 XAMPP 来简化安装过程,它包含了 Nginx 、MySQL、PHP 等…...
使用API有效率地管理Dynadot域名,清除某一文件夹中域名的默认DNS设置
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...
评估多智能体协作网络(MACNET)的性能:COT和AUTOGPT基线方法
评估多智能体协作网络(MACNET)的性能 方法选择:选择COT(思维链,Chain of Thought)、AUTOGPT等作为基线方法。 COT是一种通过在推理过程中生成中间推理步骤,来增强语言模型推理能力的方法,能让模型更好地处理复杂问题,比如在数学问题求解中,展示解题步骤。 AUTOGPT则是…...
(4/100)每日小游戏平台系列
新增一个点击反应速度测试! 点击反应速度测试是一款简单有趣的网页小游戏,旨在测试玩家的反应能力和专注度。通过随机高亮的颜色块,玩家需要快速点击正确的颜色,并在限定时间内挑战自己的反应速度。 📜 游戏规则 游戏开…...
Day42(补)【AI思考】-编译过程中语法分析及递归子程序分析法的系统性解析
文章目录 编译过程中语法分析及递归子程序分析法的系统性解析**一、总览:编译流程中的语法分析****1. 编译过程核心步骤** **二、语法分析的核心任务****1. 核心目标****2. 现实类比** **三、递归子程序分析法的本质****1. 方法分类****2. 递归子程序分析法的运作原…...
AcWing 190. 字串变换 --BFS-双向搜索
已知有两个字串 A, B 及一组字串变换的规则(至多 66 个规则): A1→B1 A2→B2 … 规则的含义为:在 A 中的子串 A1A1 可以变换为 B1、A2 可以变换为 B2…。 例如:A=abcd B=xyz 变换规则为: …...
visual studio导入cmake项目后打开无法删除和回车
通过Cmakelists.txt导入的项目做删除和回车无法响应,需要点击项目,然后选择配置项目就可以了...
【论文笔记】ZeroGS:扩展Spann3R+GS+pose估计
spann3r是利用dust3r做了增量式的点云重建,这里zeroGS在前者的基础上,进行了增量式的GS重建以及进行了pose的联合优化,这是一篇dust3r与GS结合的具有启发意义的工作。 abstract NeRF和3DGS是重建和渲染逼真图像的流行技术。然而,…...
Vue2中常用指令
文章目录 Vue2中常用指令1. v-text 动态渲染纯文本内容1. 作用2. 基本用法3. 示例4. 注意事项 2. v-html 动态渲染 HTML 内容1. 作用2. 基本用法3. 示例4. 注意事项 3. v-bind 动态绑定 HTML 属性1. 作用2. 基本用法3. 示例4. 注意事项5. 绑定class属性的用法6. 绑定style属性的…...
09-轮转数组
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 方法一:使用额外数组 function rotate(nums: number[], k: number): void {const n nums.length;k k % n; // 处理 k 大于数组长度的情况const newNums new A…...
本地Deepseek-r1:7b模型集成到Google网页中对话
本地Deepseek-r1:7b网页对话 基于上一篇本地部署的Deepseek-r1:7b,使用黑窗口对话不方便,现在将本地模型通过插件集成到Google浏览器中 安装Google插件 在Chrome应用商店中搜索page assis 直接添加至Chrome 修改一下语言 RAG设置本地运行的模型&#…...
算法——结合实例了解广度优先搜索(BFS)搜索
一、广度优先搜索初印象 想象一下,你身处一座陌生的城市,想要从当前位置前往某个景点,你打开手机上的地图导航软件,输入目的地后,导航软件会迅速规划出一条最短路线。这背后,就可能运用到了广度优先搜索&am…...
2025年3月营销灵感日历
2025年的第一场营销大战已经拉开帷幕了! 三月可是全年最值钱的营销黄金月——妇女节、植树节、315消费者日三大爆点连击,还有春分、睡眠日、世界诗歌日等20隐藏流量密码。 道叔连夜扒了18个行业数据,整理了这份《2025年3月营销灵感日历》&a…...
【认证授权FAQ】SSL/TLS证书过期导致的CLS认证失败
问题现象 问题分析 属于Agent操作系统的根认证机构过期问题,需要下载CA然后在系统安装。 DigiCert根证书和中间证书将在未来几年过期,一旦证书过期,基于证书颁发的SSL/TLS证书将不再信任,导致网站无法HTTPs访问。需要迁移到新的根…...
飞书专栏-TEE文档
CSDN学院课程连接:https://edu.csdn.net/course/detail/39573...
自己部署 DeepSeek 助力 Vue 开发:打造丝滑的时间线(Timeline )
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 自己…...
机器学习:集成学习和随机森林
集成学习 集成学习通过构建并合并多个模型来完成学习,从而获得比单一学习模型更显著优越的泛化能力,集成学习就是利用模型的"集体智慧",提升预测的准确率,根据单个模型方式,集成学习可分为两大类: 个体之间存在强依赖关系,其代表为Boosting算法个体之间不存在强依赖…...
力扣刷题(数组篇)
日期类 #pragma once#include <iostream> #include <assert.h> using namespace std;class Date { public:// 构造会频繁调用,所以直接放在类里面(类里面的成员函数默认为内联)Date(int year 1, int month 1, int day 1)//构…...
Jenkins 新建配置 Freestyle project 任务 六
Jenkins 新建配置 Freestyle project 任务 六 一、新建任务 在 Jenkins 界面 点击 New Item 点击 Apply 点击 Save 回到任务主界面 二、General 点击左侧 Configure Description:任务描述 勾选 Discard old builds Discard old builds:控制何时…...
5.8 软件质量与软件质量保证
文章目录 软件质量模型软件质量保证 软件质量模型 软件质量模型有ISO/IEC9126,McCall。 ISO/IEC9126从功能性、可靠性、易使用性、效率、可维护性、可移植性这6个方面对软件质量进行分析。功能性包含适合性、依从性、准确性、安全性、互用性。可靠性包含成熟性、容错…...
二次封装axios解决异步通信痛点
为了方便扩展,和增加配置的灵活性,这里将通过封装一个类来实现axios的二次封装,要实现的功能包括: 为请求传入自定义的配置,控制单次请求的不同行为在响应拦截器中对业务逻辑进行处理,根据业务约定的成功数据结构,返回业务数据对响应错误进行处理,配置显示对话框或消息形…...
Flutter项目试水
1基本介绍 本文章在构建您的第一个 Flutter 应用指导下进行实践 可作为项目实践的辅助参考资料 Flutter 是 Google 的界面工具包,用于通过单一代码库针对移动设备、Web 和桌面设备构建应用。在此 Codelab 中,您将构建以下 Flutter 应用。 该应用可以…...
Java 大视界 -- 边缘计算与 Java 大数据协同发展的前景与挑战(85)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
【第1章:深度学习概览——1.2 深度学习与机器学习、传统人工智能的区别与联系】
在科技飞速发展的时代,AI 技术如同一颗璀璨的明星,照亮了我们生活的方方面面。今天,让我们一起深入探寻 AI 技术的演进历程,看看它是如何从最初的简单规则系统,一步步发展成为如今强大的智能技术。 一、开篇故事:三杯咖啡看懂三代 AI 想象一下,你经营着一家充满温馨氛…...
游戏引擎学习第99天
仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板:制作一些光场(Light Field) 当前的目标是为游戏添加光照系统,并已完成了法线映射(normal maps)的管道,但还没有创建可以供这些正常映射采样的光场。为了继续推进&…...
NixHomepage - 简单的个人网站
💻 NixHomepage - 简单的个人网站 推荐下个人的开源项目,演示网站,项目链接 https://github.com/nixgnauhcuy/NixHomepage,喜欢的话可以为我的项目点个 Star~ 📷 预览 ⚙️ 功能特性 多平台适配 明亮/暗黑模式切换 W…...
window patch按块分割矩阵
文章目录 1. excel 示意2. pytorch代码3. window mhsa 1. excel 示意 将一个三维矩阵按照window的大小进行拆分成多块2x2窗口矩阵,具体如下图所示 2. pytorch代码 pytorch源码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_p…...
Dockerfile 详解:构建自定义镜像
Dockerfile 是一种文本文件,包含了一系列指令,用于描述如何构建一个 Docker 镜像。通过 Dockerfile,我们可以将应用程序及其所有依赖打包成镜像,确保应用在不同环境中运行时保持一致性。掌握 Dockerfile 的写法和最佳实践,能够帮助我们高效地构建和管理容器镜像。 本文将…...
vue2老版本 npm install 安装失败_安装卡主
vue2老版本 npm install 安装失败_安装卡主 特别说明:vue2老版本安装慢、运行慢,建议升级vue3element plus vite 解决方案1: 第一步、修改npm 镜像为国内镜像 使用淘宝镜像: npm config set registry https://registry.npmmir…...
【细看open_r1】精读训练和评估模型以及生成合成数据的脚本(src/open_r1)
src/open_r1 目录下主要包含了一些用于训练和评估模型以及生成合成数据的Python脚本,下面我们对其中几个主要的Python文件进行深度剖析。 configs.py 这个文件定义了两个数据类 GRPOConfig 和 SFTConfig,它们分别继承自 trl.GRPOConfig 和 trl.SFTConf…...
数据库数据恢复—MongoDB丢失_mdb_catalog.wt文件导致报错的数据恢复案例
MongoDB数据库存储模式为文档数据存储库,存储方式是将文档存储在集合之中。 MongoDB数据库是开源数据库,同时提供具有附加功能的商业版本。 MongoDB中的数据是以键值对(key-value pairs)的形式显示的。在模式设计上,数据库受到的约束更少。这…...
Qt 控件整理 —— 按钮类
一、PushButton 1. 介绍 在Qt中最常见的就是按钮,它的继承关系如下: 2. 常用属性 3. 例子 我们之前写过一个例子,根据上下左右的按钮去操控一个按钮,当时只是做了一些比较粗糙的去演示信号和槽是这么连接的,这次我们…...
当 LSTM 遇上 ARIMA!!
大家好,我是小青 ARIMA 和 LSTM 是两种常用于时间序列预测的模型,各有优劣。 ARIMA 擅长捕捉线性关系,而 LSTM 擅长处理非线性和长时间依赖的关系。将ARIMA 和 LSTM 融合,可以充分发挥它们各自的优势,构建更强大的时…...
SpringBoot实战:高效获取视频资源
文章目录 前言技术实现SpringBoot项目构建产品选取配置数据采集 号外号外 前言 在短视频行业高速发展的背景下,海量内容数据日益增长,每天都有新的视频、评论、点赞、分享等数据涌现。如何高效、精准地获取并处理这些庞大的数据,已成为各大平…...
MySQL索引数据结构详解
索引的定义:方便Mysql更高效的获取排好序的数据结构 数据结构分为: 二叉树红黑树hash表B-Tree 二叉树规则:可视化二叉树 从父节点查找数据,每个节点最多有两个子节点,左子节点比父节点小,右子节点比父节…...
Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)
一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架,可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序,比如 控制台工具和服务器。Qt是面向对象的框架,使用特殊的代…...
C语言——排序(冒泡,选择,插入)
基本概念 排序是对数据进行处理的常见操作,即将数据按某字段规律排列。字段是数据节点的一个属性,比如学生信息中的学号、分数等,可针对这些字段进行排序。同时,排序算法有稳定性之分,若两个待排序字段一致的数据在排序…...
物联网智能语音控制灯光系统设计与实现
背景 随着物联网技术的蓬勃发展,智能家居逐渐成为现代生活的一部分。在众多智能家居应用中,智能灯光控制系统尤为重要。通过语音控制和自动调节灯光,用户可以更便捷地操作家中的照明设备,提高生活的舒适度与便利性。本文将介绍一…...
哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测
哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测 目录 哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测效果一览基本介绍程序设计参考资料 效果一览…...
Python实现决策树(Decision Tree)算法
在 Python 中实现一个决策树算法,可以使用 sklearn 库中的 DecisionTreeClassifier 类。这个类实现了分类任务中的决策树算法。下面是一个简单的例子,展示如何使用 DecisionTreeClassifier 来训练决策树并进行预测。 1. 安装 scikit-learn 如果你还没有…...