实习冲刺第二十五天

283.移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

思路详解:使用双指针法,开始时让两指针都指向数组首元素,先移动右指针,当右指针遇到非0数时交换双指针指向的元素,随后移动左指针。如果不理解可以看下面的图:

代码详解:

class Solution {
public:void moveZeroes(vector<int>& nums) {int left = 0, right = 0;//定义双指针while (right < nums.size())//循环遍历数组{if (nums[right]!=0) //右指针指向非零数就交换{swap(nums[left], nums[right]);//交换函数left++;//移动左指针}right++;//移动右边指针}}
};

 面经

1. c++中什么是友元函数和友元类,作用是什么,有什么注意事项

  • 友元的作用是让一个函数或者类来访问另一个类的私有成员
  • 友元的关键字为friend
  • 友元有三个实现方式

   全局函数做友元

   类做友元

   成员函数做友元

下面是一段全局函数做友元的代码示例:

#include<iostream>
#include<string>
using namespace std;
class husband
{friend void yourwife(husband* hus);//只需要在需要访问的类中声明友元全局函数,无论在私有或者共有空间都可以声明
private:string phone;
public:string wallet;
public:husband(){this->wallet = "钱包";this->phone = "手机";}
};
void yourwife(husband* hus)
{cout << "你的女朋友正在检查你的" << hus->wallet <<endl;cout << "你的女朋友正在检查你的" << hus->phone;//若如此做将可以访问私有成员
}
int main()
{husband b1;yourwife(&b1);
}
运行结果:
你的女朋友正在检查你的钱包
你的女朋友正在检查你的手机

 下面是一个类作为友元的代码示例:

	#include<iostream>#include<string>using namespace std;class husband{friend class wife;//声明友元类private:string phone;public:string wallet;public:husband(){this->wallet = "钱包";this->phone = "手机";}};class wife{public:wife();void inspect();//类内声明类外实现~wife()//类中有指针变量的成员需要释放{if (hus){delete hus;}}private:husband* hus;};wife::wife(){hus = new husband();//指针变量=new 变量类型}void wife::inspect()//作用域紧挨着函数名{cout << "你的女朋友正在检查你的" << hus->wallet <<endl;cout << "你的女朋友正在检查你的" << hus->phoneint main(){wife w1;w1.inspect();}

注意事项:

友元关系不可传递:如果类A是类B的友元,类B是类C的友元,这并不意味着类A是类C的友元。

破坏封装性:友元函数或类破坏了面向对象编程中的封装原则,因为它允许外部函数或类访问类的私有和保护成员。在设计时应谨慎使用。

友元不是成员:友元函数不是类的成员函数,它不能直接访问类的成员,必须通过对象来访问。同时,友元函数不能被继承。

友元函数的声明和定义:友元函数的声明通常在类的内部,但定义则在类的外部。它不需要类的前缀或作用域解析运算符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/19180.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

使用QTimer和SIGNAL/SLOT机制来实现系统时间的显示

在Qt中&#xff0c;使用QTimer和SIGNAL/SLOT机制来实现系统时间的显示是一个常见的做法。下面是如何实现这一功能的步骤&#xff1a; 创建定时器&#xff1a; 首先&#xff0c;你需要创建一个QTimer对象。QTimer是一个定时器类&#xff0c;可以在指定的时间间隔后发出信号。 QT…

Win11安装软件被系统阻止安装?解除限制的方法

Windows 11作为最新的操作系统&#xff0c;加入了许多安全性和稳定性的新特性。但也因此&#xff0c;一些用户在安装软件时可能遇到“安装被阻止”或“无法从此位置安装应用程序”的提示。这通常是由于系统的默认安全设置或权限限制导致的。本文将探讨这些限制的原因&#xff0…

三角波生成函数

% 设置时间范围和采样频率 t 0:0.01:2; % 时间从0到2秒&#xff0c;步长为0.01秒% 定义频率 f 和角频率 theta f 5; % 频率为5Hz theta 2 * pi * f * t;% 初始化输出向量 y zeros(size(t));% 根据给定的公式计算 y for k 1:fy y (-1)^(k-1)*(2 /(k * pi)) * sin(k * the…

sglang 部署Qwen2VL7B,大模型部署,速度测试,深度学习

sglang 项目github仓库&#xff1a; https://github.com/sgl-project/sglang 项目说明书&#xff1a; https://sgl-project.github.io/start/install.html 资讯&#xff1a; https://github.com/sgl-project/sgl-learning-materials?tabreadme-ov-file#the-first-sglang…

『大模型笔记』AI自动化编程工具汇总!

『大模型笔记』AI自动化编程工具汇总! 文章目录 一. Bolt.new(开源AI驱动全栈Web开发工具)1.1. Bolt.new介绍1.2. 编程小白如何打造自己的导航网站二. Cursor(人工智能代码编辑器)2.1. Cursor入门教程2.2. Cursor左侧布局设置和VSCode一样一. Bolt.new(开源AI驱动全栈Web开发工…

网页全终端安防视频流媒体播放器EasyPlayer.jsEasyPlayer.js关于多屏需求

EasyPlayer.js网页全终端安防视频流媒体播放器是一款功能强大的H5播放器&#xff0c;支持多种视频协议&#xff0c;包括HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4等&#xff0c;兼容视频直播与点播功能。同时&#xff0c;它支持多种音视频编码格式&a…

大模型外挂知识库优化——如何利用大模型辅助召回

大模型外挂知识库优化——如何利用大模型辅助召回&#xff1f; 一、为什么需要使用大模型辅助召回&#xff1f; 我们可以通过向量召回的方式从文档库里召回和用户问题相关的文档片段&#xff0c;同时输入到LLM中&#xff0c;增强模型回答质量。 常用的方式直接用用户的问题进…

three.js实现地球 外部扫描的着色器

three.js实现地球 外部扫描的着色器 https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idearthScan import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GUI } from three/ex…

STM32 BootLoader 刷新项目 (十一) Flash写操作-命令0x57

STM32 BootLoader 刷新项目 (十一) Flash写操作-命令0x57 1. 引言 嵌入式系统中&#xff0c;BootLoader 是设备启动的第一部分代码&#xff0c;负责硬件初始化和主程序加载。在 STM32F407 中&#xff0c;BootLoader 的另一重要功能是支持应用程序的在线升级&#xff0c;这需要…

Spring IoC——针对实习面试

目录 Spring IoC谈谈你对Spring IoC的理解IoC和DI有区别吗&#xff1f;IoC&#xff08;控制反转&#xff09;DI&#xff08;依赖注入&#xff09;IoC与DI的区别 什么是Spring Bean&#xff1f;作用域有哪些&#xff1f;Bean是线程安全的吗&#xff1f;说一下Spring Bean的生命周…

【H2O2|全栈】MySQL的云端部署

目录 前言 开篇语 准备工作 MySQL移除 为什么需要移除&#xff1f; 移除操作 Yum仓库 yum简介 rpm安装 yum库安装 MySQL安装 使用yum安装 开机自启动 检查运行状态 MySQL配置 初始密码 ​编辑登录 修改root密码 退出MySQL 字符集配置 结束语 前言 开篇语…

数据结构-二叉平衡树

一.平衡二叉树 二叉搜索树插入的次序不同导致不同的深度和平均查找长度ASL 左右子树高度差不超过绝对值1的二叉搜索是二叉平衡树 二.平衡二叉树的调整 在右子树的右子树上的插入做RR插入 把被破坏节点的右子树变成跟节点并把这个右子树的左子树挂载到原来被破坏的结点的右子树…

【PCIE716-0】基于PCIe总线架构的XC7Z100 FPGA高性能实时信号处理平台

板卡概述 PCIE716-0是一款基于PCIe总线架构的XC7Z100 FPGA高性能实时信号处理平台。该平台采用Xilinx的ZYNQ SOC系列产品XC7Z100作为主处理器。 该平台的PL端具有1个FMC&#xff08;HPC&#xff09;接口&#xff0c;1路PCIe x8主机接口&#xff0c;支持1路UART串口、支持1组6…

从0开始的数据结构速过——番外(1)

目录 尝试 思考与架构设置 编写&#xff01; 一些额外知识的补充 可变参数模板 std::common_type std::forward 这是《数据结构从0开始》的一个番外。实际上是介绍一下一些现代C的写法。这里以快速构建std::array作为契机来说明一下一些现代C的语法。 尝试 我们在这里呢…

Day10_CSS过度动画

Day10_CSS过度动画 背景 : PC和APP项目我们已经开发完毕, 但是再真正开发的时候有些有些简易的动态效果我们可以使用CSS完成 ; 本节课我们来使用CSS完成基础的动画效果 今日学习目标 CSS3过度CSS3平面动态效果CSS3动画效果案例 1. CSS3过渡 ​ 含义 :过渡指的是元素从一种…

如何制作代购系统的客服支持模块

在代购系统中&#xff0c;客服支持模块是维护用户满意度和忠诚度的关键环节。一个有效的客服支持模块不仅可以解决用户的疑问和问题&#xff0c;还可以收集用户反馈&#xff0c;用于改进服务和产品。本文将详细介绍如何制作一个代购系统的客服支持模块&#xff0c;包括前端界面…

【unity小技巧】一些unity3D灯光的使用与渲染及性能优化方案

文章目录 天空盒反射配置太阳耀斑眩光烘培光照烘培光照时弹出错误&#xff0c;记得勾选模型下面的选择阴影项目配置光源模型模型shader的问题 全局光照混合光照模式混合照明模式减性照明模式Shadowmask照明模式间接烘焙照明模式 环境光遮罩灯光探针反射探针技术关闭反射探针可以…

Spring Boot汽车资讯:科技与汽车的对话

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 汽车资讯网站的系统管理员可以管理用户&#xff0c;可以对用户信息修改删除审核以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.1.2 汽车品牌管理 系统管理员可以汽车品牌信息进行添加&#xf…

go 学习网站,go例子 go demo go学习视频

1. 代码例子&#xff1a; Go by Example 2. b站 视频&#xff1a; 尚硅谷视频&#xff1a; 004_尚硅谷_程序的基本概念_哔哩哔哩_bilibili 3. go技术文档&#xff1a; fmt Go语言中文文档

记录下,用油猴Tampermonkey监听所有请求,绕过seesion

油猴Tampermonkey监听所有请求&#xff0c;绕过seesion 前因后果脚本编写 前因后果 原因是要白嫖一个网站的接口&#xff0c;这个接口的页面入口被隐藏掉了&#xff0c;不能通过页面调用&#xff0c;幸好之前有想过逆向破解通过账号密码模拟登录后拿到token&#xff0c;请求该…