从熟练Python到入门学习C++(record 6)
基础之基础之最后一节-结构体
1.结构体的定义
结构体相对于自定义的一种新的变量类型。
四种定义方式,推荐第一种;第四种适合大量定义,也适合查找;
#include <iostream>
using namespace std;
#include <string.h>struct Student
{string name;int age;float score;
}s3;void prinf(Student s)
{cout << s.name << " | " << s.age << " | " << s.score << endl;
}int main()
{Student s1;s1.name = "niuniu";s1.age = 18;s1.score = 96;prinf(s1);Student s2 = { "zhangsan", 92, 30 };prinf(s2);s3.name = "lisi";s3.age = 13;s3.score = 31;prinf(s3);//shuzuStudent arr[3] = {{"zhangsan", 31,55},{"lisi", 41, 42},{"wangwu", 32,44}};for (int i = 0; i < 3; ++i){prinf(arr[i]);};return 0;}
2.结构体指针
和其他类型的指针一致;需要注意的是,如果s是结构体的指针,不仅可以使用(*s).name还可以使用s->name访问结构体的属性;
#include <iostream>
using namespace std;
#include <string.h>struct Student
{string name;int age;float score;
}s3;void prinf(Student* s)
{cout << s->name << " | " << s->age << " | " << s->score << endl;
}int main()
{Student s1;s1.name = "niuniu";s1.age = 18;s1.score = 96;prinf(&s1);Student s2 = { "zhangsan", 92, 30 };prinf(&s2);s3.name = "lisi";s3.age = 13;s3.score = 31;prinf(&s3);//shuzuStudent arr[3] = {{"zhangsan", 31,55},{"lisi", 41, 42},{"wangwu", 32,44}};for (int i = 0; i < 3; ++i){prinf(&arr[i]);};return 0;}
3.结构体嵌套结构体
类似于函数中包含函数;
#include <iostream>
using namespace std;
#include <string.h>struct teacher
{int id;string name;int age;student std;
};struct student
{string name;int age;int score;
};
结果报错,因为需要把student放在前面!!!
4.案例
给三国英雄排序;使用结构体,指针
#include <iostream>
#include <string.h>
using namespace std;struct hero
{string name;int age;string gender;
};void prf(hero arr[5])
{for (int i = 0; i < 5; i++){cout << arr[i].name << " | " << arr[i].age << " | " << arr[i].gender << endl;}
}void sort(hero arr[5], const int nums)
{for (int i = 0; i < nums; i++){int counts = nums;for (int j = 0; j < nums - i - 1; j++){if (arr[j].age > arr[j + 1].age){hero tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;counts--;}}}
}int main()
{hero arr[5] = {{"liubei",22,"nan"},{"guanyu", 22, "nan"},{"zhangfei", 20, "nan"},{"zhaoyun", 21, "nan"},{"diaochan", 19, "nv"}};sort(arr, 5);prf(arr);return 0;}
总结一下:
1.对于python来说,数组传入函数时,相当于传入c++指针,因为函数中改变数组中的值,外部的数组也会改变;所以不想改变的时候,需要使用deep.copy。
2.对于c++来说,不仅数组传入相对于指针,对于整型、实型及结构体,只要使用&a,把a的指针传入函数,在函数中修改后,外部的值也会改变。
3.对于c++的数组来说,就算不使用*p,arr本身也是地址。所以在函数中对于传入的arr来说,不需要使用指针,也能干指针的活;
相关文章:
从熟练Python到入门学习C++(record 6)
基础之基础之最后一节-结构体 1.结构体的定义 结构体相对于自定义的一种新的变量类型。 四种定义方式,推荐第一种;第四种适合大量定义,也适合查找; #include <iostream> using namespace std; #include <string.h>…...
jenkins的安装(War包安装)
Jenkins是一个开源的持续集成工具,基于Java开发,主要用于监控持续的软件版本发布和测试项目。 它提供了一个开放易用的平台,使软件项目能够实现持续集成。Jenkins的功能包括持续的软件版本发布和测试项目,以及监控外部调用执行…...
WPS 加载项开发说明wpsjs
wpsjs几个常用的CMD命令: 1.打开cmd输入命令测试版本号 npm -v 2.首次安装nodejs,npm默认国外镜像,包下载较慢时,可切换到国内镜像 //下载速度较慢时可切换国内镜像 npm config set registry https://registry.npmmirror.com …...
【Anomaly Detection论文阅读记录】PaDiM与PatchCore模型的区别与联系
PaDiM与PatchCore模型的区别与联系 背景介绍 PADIM(Pretrained Anomaly Detection via Image Matching)和 PatchCore 都是基于深度学习的异常检测方法,主要用于图像异常检测,尤其是在无监督学习设置下。 PADIM 是一种通过利用预训练的视觉模型(例如,ImageNet预训练的卷…...
uni-app Vue3语法实现微信小程序样式穿透uview-plus框架
1 问题描述 我在用 uni-app vue3 语法开发微信小程序时,在项目中使用了 uview-plus 这一开源 UI 框架。在使用 up-text 组件时,想要给它添加一些样式,之前了解到微信小程序存在样式隔离的问题,也在uview-plus官网-注意事项中找到…...
K8S基础概念和环境搭建
K8S的基础概念 1. 什么是K8S K8S的全称是Kubernetes K8S是一个开源的容器编排平台,用于自动化部署、扩缩、管理容器化应用程序。 2. 集群和节点 集群:K8S将多个机器统筹和管理起来,彼此保持通讯,这样的关系称之为集群。 节点…...
[服务器] 腾讯云服务器免费体验,成功部署网站
文章目录 概要整体架构流程概要 腾讯云服务器免费体验一个月。 整体架构流程 腾讯云服务器体验一个月, 选择预装 CentOS 7.5 首要最重要的是: 添加阿里云镜像。 不然国外源速度慢, 且容易失败。 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/li…...
vue中el-select 模糊查询下拉两种方式
第一种:先获取所有下拉数据再模糊查询,效果如下 1,页面代码:speciesList是种类列表List, speciesId 是speciesList里面对应的id,filterable是过滤查询标签 <el-form-item label"种类" prop"species…...
深入解析PostgreSQL中的PL/pgSQL语法
在数据库管理系统中,PostgreSQL因其强大的功能和稳定性而受到广泛欢迎。其中,PL/pgSQL作为PostgreSQL的过程化语言,为用户提供了更为灵活和强大的编程能力。本文将深入解析PL/pgSQL的语法,帮助读者更好地掌握这门语言,…...
Vue 3集成海康Web插件实现视频监控
🌈个人主页:前端青山 🔥系列专栏:组件封装篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来组件封装篇专栏内容:Vue 3集成海康Web插件实现视频监控 引言 最近在项目中使用了 Vue 3 结合海康Web插件来实…...
多目标优化算法:多目标蛇鹫优化算法(MOSBOA)求解DTLZ1-DTLZ9,提供完整MATLAB代码
一、蛇鹫优化算法 蛇鹫优化算法(Secretary Bird Optimization Algorithm,简称SBOA)由Youfa Fu等人于2024年4月发表在《Artificial Intelligence Review》期刊上的一种新型的元启发式算法。该算法旨在解决复杂工程优化问题,特别是…...
机器翻译基础与模型 之三:基于自注意力的模型
基于RNN和CNN的翻译模型,在处理文字序列时有个问题:它们对序列中不同位置之间的依赖关系的建模并不直接。以CNN的为例,如果要对长距离依赖进行描述,需要多层卷积操作,而且不同层之间信息传递也可能有损失,这…...
如何使用PCL处理ROS Bag文件中的点云数据并重新保存 ubuntu20.04
如何使用PCL处理ROS Bag文件中的点云数据并重新保存 要精确地处理ROS bag中的点云数据并使用PCL进行处理,再将处理后的数据保存回新的ROS bag文件,以下方案提供了详细、专业和严谨的步骤。 步骤 1: 环境设置 确保安装了ROS和PCL,并配置好环…...
背包问题(动态规划)
背包问题是一种组合优化的问题,它有多种变体,但最常见的两种是0/1背包问题和完全背包问题。 0/1背包问题 问题描述: 假设你有一个背包,背包的容量为W(可以是重量或者体积等度量),同时有n个物品…...
从0开始学习机器学习--Day26--聚类算法
无监督学习(Unsupervised learning and introduction) 监督学习问题的样本 无监督学习样本 如图,可以看到两者的区别在于无监督学习的样本是没有标签的,换言之就是无监督学习不会赋予主观上的判断,需要算法自己去探寻区别,第二张…...
Vue3插槽v-slot使用方式
在 Vue 3 中,v-slot 是用来定义和使用插槽的指令。插槽是 Vue 的一个功能,允许你在组件内部定义占位内容,便于在父组件中提供动态内容。以下是 v-slot 的详细使用方法: 1. 基础使用 <template><BaseComponent><te…...
Axure二级菜单下拉交互实例
1.使用boxlabe进行基础布局 2.设置鼠标悬浮和选中状态 3.转换为动态面板 选中所有二级菜单,进行按钮组转换 选中所有二级菜单,进行动态面板转换 4.给用户管理增加显示/隐藏事件 1)选择toggle代表上拉和下拉切换加载 2)勾选Bring to Front,并选择Push/Pull Widgets代表收缩时…...
华为VPN技术
1.启动设备 2.配置IP地址 [FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip add 192.168.1.254 24 [FW1-GigabitEthernet1/0/0]int g1/0/1 [FW1-GigabitEthernet1/0/1]ip add 100.1.1.1 24 [FW1-GigabitEthernet1/0/1]service-manage ping permit [FW2]int g1/0/0 [FW2-Gi…...
CommonsBeanutils与Shiro发序列化利用的学习
一、前言 前面的学习中,过了一遍cc1-cc7的利用链,在CC2的利用链中,学习了 java.util.PriorityQueue,它在Java中是一个优先队列,队列中每一个元素都有自己的优先级。在反序列化这个对象时,为了保证队列顺序…...
运维云计算SRE-第2周
1. 总结学过的权限,属性及ACL相关命令及选项,示例。 一、Linux安全模型 (一)资源分派 Authentication(认证):验证用户身份,确保登录系统的用户是合法的。 Authorization(…...
从抓包到反编译:wx小程序逆向实战全记录(含云函数分析)
从抓包到反编译:小程序逆向工程深度解析与技术实践 在移动互联网时代,小程序以其轻量化和便捷性迅速占领市场,而作为开发者,理解小程序背后的运行机制不仅能提升开发能力,更能帮助进行安全审计和性能优化。本文将带您深…...
告别Keil?STM32CubeIDE环境搭建全记录:附JAVA安装与汉化资源指北
从Keil到STM32CubeIDE:嵌入式开发环境迁移实战指南 当ST官方逐渐将重心转向HAL库生态时,许多传统开发者正面临工具链升级的抉择。作为一款集成了STM32CubeMX功能的Eclipse-based IDE,STM32CubeIDE不仅代表着开发模式的转变,更预示…...
NaViL-9B开源模型生态:HuggingFace模型卡+GitHub训练代码指引
NaViL-9B开源模型生态:HuggingFace模型卡GitHub训练代码指引 1. 平台简介 NaViL-9B是上海人工智能实验室发布的一款原生多模态大语言模型,支持纯文本问答和图片理解双重能力。作为开源社区的重要贡献,该模型已在HuggingFace平台发布模型卡&…...
OpenClaw跨平台测试:Qwen3-VL:30B在Mac/Win/Linux飞书表现
OpenClaw跨平台测试:Qwen3-VL:30B在Mac/Win/Linux飞书表现 1. 测试背景与动机 去年12月接手团队自动化工具选型时,我们遇到了一个典型困境:团队成员分别使用macOS、Windows和Ubuntu系统,但现有AI助手工具要么绑定特定平台&#…...
火星探测器通信系统设计与关键技术解析
1. 火星探测器通信系统设计解析1.1 火星探测任务概述2021年5月15日,中国首次火星探测任务"天问一号"成功着陆火星北半球的乌托邦平原,标志着中国成为继前苏联和美国之后第三个成功实现火星软着陆的国家。此次任务中,"祝融号&q…...
Python AI用例生成效率实战手册(企业级自动化工作流全拆解)
第一章:Python AI用例生成效率的核心价值与企业级定位在AI工程化落地加速的当下,Python凭借其丰富的生态(如LangChain、LlamaIndex、transformers、scikit-learn)和低门槛的可编程性,已成为企业构建AI用例生成流水线的…...
手把手教你用XTTS v2克隆自己的声音:从录音到生成的完整避坑指南
零基础玩转XTTS v2语音克隆:从录音到生成的保姆级实战手册 1. 语音克隆技术的前世今生 语音合成技术(TTS)的发展已经走过了数十年的历程。从早期的机械式发音到如今的神经网络语音合成,技术的进步让语音克隆变得越来越自然。XTTS …...
RWKV7-1.5B-G1A跨平台部署实战:从Windows开发到Linux生产环境
RWKV7-1.5B-G1A跨平台部署实战:从Windows开发到Linux生产环境 1. 引言 最近在开发一个基于RWKV7-1.5B-G1A的智能写作助手,遇到了一个很实际的问题:在Windows笔记本上开发调试很方便,但真正要上线服务时,又需要在Linu…...
Cesium 视角控制全攻略:禁用鼠标交互的多种方法
1. 为什么需要禁用Cesium鼠标交互? 在开发基于Cesium的三维地理信息系统时,我们经常会遇到需要限制用户视角操作的场景。比如在展示固定路线的飞行演示时,如果允许用户随意旋转地图,可能会打乱预设的动画效果;在嵌入式…...
从‘文化进化’到AI调参:Memetic算法在机器学习超参数优化中的实战指南
Memetic算法:机器学习超参数优化的进化革命 当你的神经网络在验证集上表现停滞不前,当XGBoost的网格搜索消耗了三天三夜却收效甚微,或许该换个视角看待调参这个"玄学"问题了。Memetic算法——这个融合了达尔文进化论与文化传播智慧…...
