力扣 只出现一次的数字-136

news2025/1/13 8:03:40

只出现一次的数字-136

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        //按位异或的规则是:两个二进制位相同时结果为0,不同时结果为1
        //具有自反性,两个二进制位相同时结果为0,一个数(a)和0按位异或的结果为a。
        int result = 0;
        for(int i=0;i<nums.size();i++)
        {
            result ^= nums[i];
        }
        //循环按位异或后成对出现的数字会相互抵消,最后剩下的就是唯一的数组
        return result;
    }
};

每日问题

什么是 C++ 中的初始化列表?它的作用是什么? 

C++中的初始化列表

在C++中,初始化列表是用于初始化类对象成员的一种特殊语法。它在类的构造函数定义中,通过:后面跟随成员变量的初始化表达式实现。

语法

class MyClass{
    int a;
    int b;
public:
    MyClass(int x, int y) : a(x), b(y){
        //构造函数体(可选)    
    }
};

这里的: a(x),b(y)就是初始化参数列表。它在构造函数体执行之前完成成员变量的初始化。

作用

初始化参数列表的主要作用是高效和正确地初始化类成员,尤其是以下几种情况:

1.初始化常量成员

常量(const)类成员必须在初始化时赋值,而不能在构造函数体内赋值:

class MyClass{
    const int a;
public:
    MyClass(int x):a(x){}
};

2.初始化引用成员

引用类型(&)成员必须在初始化列表中赋值,因为它们需要在定义时绑定:

class MyClass{
    int& ref;
public:
    MyClass(int& x):ref(x){}
};

3.调用基类构造函数

当派生类需要调用基类的构造函数初始化时,必须使用初始化参数列表:

class Base{
public:
    Base(int x){}
};

class Derived : public Base{
public:
    Derived(int y):Base(y){}
};

4.调用成员对象的构造函数

如果类包含类型为其他类的对象成员,这些对象成员通常需要通过构造函数初始化:

class Member{
public:
    Member(int x){}
};
class MyClass{
    Member m;
public:
    MyClass(int y):m(y){}        
};

5.提高效率

在初始化列表中赋值直接初始化变量,避免了在构造函数中现默认初始化再赋值的额外开销。

初始化列表与构造函数体的区别

class MyClass{
    int a;
    int b;
public:
    MyClass(int x, int y){
        a = x;
        b = y;    
    }
    MyClass(int x,int y):a(x),b(y){
        //初始化列表直接初始化a 和 b    
    }
};

初始化列表直接初始化,效率更高。

构造函数体内赋值可能导致多次初始化(现默认初始化,再赋值),效率较低。

初始化列表和在构造函数体内赋值有什么区别?

1.初始化顺序

初始化列表:成员变量在构造函数体执行之前完成初始化,成员的初始化顺序是根据它们在类中的声明顺序,而不是在初始化列表中的书写顺序。

class MyClass{
    int a;
    int b;
public:
    MyClass(int x,int y):b(y),a(x){}//实际初始化顺序是a然后b
};

构造函数体内赋值:成员变量会先默认初始化(调用其默认构造函数),然后在构造函数体中通过赋值语句重新赋值。

2.效率差异

初始化列表效率更高:初始化列表直接调用成员的构造函数完成初始化,无需经历额外的默认构造和赋值过程

MyClass(int x, int y) : a(x), b(y) {} // a 和 b 被直接初始化

构造函数体内赋值效率较低:成员变量会先进行默认初始化(如果类型是类对象,则会调用默认构造函数),然后再通过赋值语句修改其值。这会导致额外的开销。

MyClass(int x, int y) {
    a = x; // 先默认构造,再赋值
    b = y;
}

3.必须使用初始化列表的情况

某些情况下,构造函数体内赋值无法满足需求,必须使用初始化列表:

1.初始化常量成员:常量(const)类成员必须在初始化时赋值,不能通过赋值语句修改。

2.初始化引用成员:引用类型(&)成员必须在初始化列表中赋值,因为它们需要在定义时绑定,不能通过赋值语句完成。

3.成员对象没有默认构造函数:如果成员对象是某个类的实例,而该类没有默认构造函数,则必须通过初始化列表调用其其他构造函数。

4.构造顺序的隐含特定

        初始化列表:初始化列表的顺序由成员变量在类中声明的顺序决定。

        构造函数体内赋值:即使顺序写对了,仍会因为两步(默认构造+赋值)而显得繁琐。

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

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

相关文章

Vue.js 自定义指令:从零开始创建自己的指令

vue使用directive 前言vue2使用vue3使用 前言 关于使用自定义指令在官网中是这样描述的 vue2:对普通 DOM 元素进行底层操作&#xff0c;这时候就会用到自定义指令。 vue3:自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。 在 Vue.js 中使用自定义指令&#xf…

MySQL-关键字执行顺序

&#x1f496;简介 在MySQL中&#xff0c;SQL查询语句的执行遵循一定的逻辑顺序&#xff0c;即使这些关键字在SQL语句中的物理排列可能有所不同。 &#x1f31f;语句顺序 (8) SELECT (9) DISTINCT<select_list> (1) FROM <left_table> (3) <join_type> JO…

Odoo :免费且开源的农牧行业ERP管理系统

文 / 开源智造Odoo亚太金牌服务 引言 提供农牧企业数字化、智能化、无人化产品服务及全产业链高度协同的一体化解决方案&#xff0c;提升企业智慧种养、成本领先、产业互联的核心竞争力。 行业典型痛点 一、成本管理粗放&#xff0c;效率低、管控弱 产品研发过程缺少体系化…

labview记录系统所用月数和天数

在做项目时会遇到采集系统的记录&#xff0c;比如一个项目测试要跑很久这个时候就需要在软件系统上显示项目运行了多少天&#xff0c;从开始测试开始一共用了多少年多少月。 年的话还好计算只需要把年份减掉就可以了&#xff0c;相比之下月份和天数就比较难确定&#xff0c;一…

【C++笔记】list使用详解及模拟实现

前言 各位读者朋友们大家好&#xff01;上期我们讲了vector的使用以及底层的模拟实现&#xff0c;这期我们来讲list。 目录 前言一. list的介绍及使用1.1 list的介绍1.2 list的使用1.2.1 list的构造1.2.2 list iterator的使用1.2.3 list capacity1.2.4 list element access1.…

window 中安装 php 环境

window 中安装 php 环境 一、准备二、下载三、安装四、测试 一、准备 安装前需要安装 Apache &#xff0c;可以查看这篇博客。 二、下载 先到这里下载 这里选择版本为“VS16 x64 Thread Safe”&#xff0c;这个版本不要选择线程安全的&#xff0c;我试过&#xff0c;会缺少文…

【大模型】LLaMA: Open and Efficient Foundation Language Models

链接&#xff1a;https://arxiv.org/pdf/2302.13971 论文&#xff1a;LLaMA: Open and Efficient Foundation Language Models Introduction 规模和效果 7B to 65B&#xff0c;LLaMA-13B 超过 GPT-3 (175B)Motivation 如何最好地缩放特定训练计算预算的数据集和模型大小&…

流程图图解@RequestBody @RequestPart @RequestParam @ModelAttribute

RequestBody 只能用一次&#xff0c;因为只有一个请求体 #mermaid-svg-8WZfkzl0GPvOiNj3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8WZfkzl0GPvOiNj3 .error-icon{fill:#552222;}#mermaid-svg-8WZfkzl0GPvOiNj…

论文阅读--supervised learning with quantum enhanced feature spaces

简略摘要 量子算法实现计算加速的核心要素是通过可控纠缠和干涉利用指数级大的量子态空间。本文在超导处理器上提出并实验实现了两种量子算法。这两种方法的一个关键组成部分是使用量子态空间作为特征空间。只有在量子计算机上才能有效访问的量子增强特征空间的使用为量子优势提…

django+boostrap实现注册

一、django介绍 Django 是一个高级的 Python 网络框架&#xff0c;可以快速开发安全和可维护的网站。由经验丰富的开发者构建&#xff0c;Django 负责处理网站开发中麻烦的部分&#xff0c;因此你可以专注于编写应用程序&#xff0c;而无需重新开发。 它是免费和开源的&#x…

【面试题】接口怎么测试?如何定位前后端的Bug?

接口怎么测试&#xff1f; 接口测试用来验证不同软件组件之间的交互是否正常。包括验证数据传输&#xff0c;参数传递&#xff0c;我在多个项目中有过测试接口的经验。&#xff08;… 当进行接口测试时&#xff0c;会使用Postman和Python的Requests库。首先根据接口文档设计测…

151页PDF | XX集团数字化转型SAP项目规划方案(限免下载)

一、前言 这份报告是XX集团数字化转型SAP项目规划方案&#xff0c;该报告涵盖了集团战略解读、管理痛点分析、信息化建设目标、整体架构方案、实施策略、SAP系统价值和预期收益&#xff0c;旨在通过数字化推动集团运营模式变革&#xff0c;实现降本增效和价值创新。 《XX集团…

iOS逆向入门:使用theos注入第三方依赖库

背景 theos是一个跨平台的软件开发框架&#xff0c;常用于管理&#xff0c;开发和部署iOS项目&#xff0c;同时也是开发iOS越狱插件的主要工具。和MonkeyDev不同的是&#xff0c;它不依赖于xcode&#xff0c;可以在多个操作系统上运行。一个完整的iOS越狱开发流程包括&#xf…

LLM文档对话 —— pdf解析关键问题

一、为什么需要进行pdf解析&#xff1f; 最近在探索ChatPDF和ChatDoc等方案的思路&#xff0c;也就是用LLM实现文档助手。在此记录一些难题和解决方案&#xff0c;首先讲解主要思想&#xff0c;其次以问题回答的形式展开。 二、为什么需要对pdf进行解析&#xff1f; 当利用L…

HarmonyOS Next 浅谈 发布-订阅模式

HarmonyOS Next 浅谈 发布-订阅模式 前言 其实在目前的鸿蒙应用开发中&#xff0c;或者大前端时代、vue、react、小程序等等框架、语言开发中&#xff0c;普通的使用者越来越少的会碰到必须要掌握设计模式的场景。大白话意思就是一些框架封装太好了&#xff0c;使用者只管在它…

【HCIP]——OSPF综合实验

题目 实验需求 根据上图可得&#xff0c;实验需求为&#xff1a; 1.R5作为ISP&#xff1a;其上只能配置IP地址&#xff1b;R4作为企业边界路由器&#xff0c;出口公网地址需要通过PPP协议获取&#xff0c;并进行CHAP认证。&#xff08;PS&#xff1a;因PPP协议尚未学习&#…

利用大语言模型对基准数据集在预处理和微调过程的数据污染检测

概述 虽然大规模语言模型发展迅速&#xff0c;但对其进行评估却变得越来越困难。人们在短时间内建立了许多基准来评估大规模语言模型的性能&#xff0c;但这些分数并不一定反映真实世界的性能。此外&#xff0c;还有人指出&#xff0c;这些基准数据集可能受到预处理和微调过程…

【SKFramework框架】一、框架介绍

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…

Linux中定时操作

一、一次性定时 这里以23&#xff1a;00为例 输入相关时间----at 23&#xff1a;00 所保存在哪个文件里------ ls /root > at.txt <EOT> &#xff08;ctrld退出到root&#xff09; 查看计划任务 ------ at -l 最后删除任务----at -d 2 二、周期性定时&#xf…

自回归和Rectified Flow完美融合统一多模态理解和生成!DeepSeek北大等开源JanusFlow

论文链接&#xff1a;https://arxiv.org/pdf/2411.07975 github链接&#xff1a;https://github.com/deepseek-ai/Janus 亮点直击 统一多模态框架&#xff1a; 提出 JanusFlow&#xff0c;一个同时处理图像理解和文本到图像生成任务的统一模型&#xff0c;解决了任务分离带来的…