当前位置: 首页 > news >正文

跟我学C++中级篇——C++初始化的方式

一、初始化的方式

在前面的初级篇中对C++的初始化有过一个说明。但随着新标准的迭代以及新的方式的应用,本篇对初始化再做一次整体的总结。下面把C++的初始化按照时间线进行一个划分:
1、早期初始化
这种初始化中,开发者一般在初学时都会遇到,容易理解也很容易被实现。
2、C++11引入的初始化
在C++11的标准中增加了一些新方法,如列表初始化(List Initialization)。
3、更高版本的初始化
在C++17之后又引入了更新方式的聚合初始化等(注意早期版本也支持,但限制较大),在更高的版本如C++20,23,26中可能也会有新方式出现。如C++20支持类似于结构成员的指定初始化(designated initializers)。

二、初始化的分类和作用

初始化的种类主要有以下几种:
1、基础类型的初始化
默认初始化 :默认初始化好理解,就是不管是局部还是全局的基础类型变量或对象型变量,不管是在堆上栈上还是哪,默认的初始值。这个值比较难确定,比如类似int这种类型的全局变量可能默认就是0,但局部变量就不一定。同样其它的类型也是如此。默认初始化其实在大多数情况下,被认定为未初始化,因为这种初始化的手段,往往会引发一些异常甚至导致程序的崩溃。
直接初始化:直接初始化更好理解,直接向变量赋值即可。特别是基础变量,直接给定一个值。

int i;//如果是全局定义一般是0,局部一般是随机值
T t;  //类对象看其构造函数的处理,如果使用了=default,成员值能为0的一般也为0
static int d; //静态一般也是0

2、对象类型的初始化
直接初始化 :和基础类型没有什么区别,直接赋值即可,浅拷贝也可以算到直接初始化中。类变量可以在类的声明中直接初始化 ,方便快捷,这也算是直接初始化的一个应用扩展。
拷贝初始化:拷贝初始化有两种形式,一种是使用拷贝函数。
列表初始化:列表初始化是一个很大的大锅,几乎可以把所有的初始化的实现都装进来。表现形式就是一对大括号“{}”。不过这里面有一个问题,就是初始化时,使用={}还是直接使用{}是有区别的,前者是有一个赋值动作的。
聚合初始化 :这个和列表初始化有些类似或者说它是列表初始化的一个子集,需要注意的只有一点,即聚合类型(Aggregate Type)是什么?不准确但简单的可以理解成POD类型即可(可参看前面的文章或在查看相关资料)。当然,在C++11到C++20中,不断的对其进行松绑使得其的应用范围越来越大。
使用memset函数调用这种方式。初始化也可以划到直接初始化这一类

int a[] = {2,5,9};
class T{int a_;T(int a = 0): a_(a) {}     // defaultT(const T& t): a_(a.a_) {}  // copy
};
T t;
T t1(t);
t t2 ={t};

3、混合初始化
混合初始化就更好理解了。开发的过程中,谁也不敢保只用一种初始化,往往是各种初始化手段都有。特别是多个人维护的同一模块的代码,更是如此。同样,随着新标准的推出,可能后来的开发者就会更倾向于使用新的初始化方法。举一个例子,可能前面对数组使用直接初始化。而C++17后就很可能使用列表初始化。

class T{
public:
T(int x,int y):a(x),b(y){}
int a = 0;
int b = 0;
};
T t{2,3};
T t1{.b =2,.a= 3};//利用指定初始化,C支持顺序变化,但C++一般不支持即顺序必须一致

4、常量和静态变量的初始化
之所以把常量和静态变量的初始化单独拿出来是因为它们的特殊,特别是二者共同使用时,会有一些特殊的用法。比如静态变量是不可以在类内直接初始化的。但如果是静态常量,则可以在类内直接初始化。特别是在C++11后的constexpr随着标准不断的扩大适用范围。需要开发者认真分析一下标准的迭代过程。

const int a = 10;
static const int b = 9;
constexpr int c = 9;
class T{
static constexpr int c = 99;
}

说明:在其它的一些资料里可能对初始化划分的更细,比如它们把这些划分为:

  1. Value initialization
  2. Zero initialization
  3. Default initialization
  4. Direct initialization
  5. Copy initialization
  6. List initialization
  7. Aggregate initialization
  8. Reference initialization
  9. Constant initialization

内容很简单,只要略懂英文都可以理解明白,实在有些细节不明白的可以查看一下相关的资料,没有难度。其实主要是值初始化和零初始化,可以认为值初始化包含着零初始化。它们的形式类似但在对象包含=default或默认构造函数时,先进行零初始化再进行值初始化。
另外需要处理一下在使用{}时进行值初始化时,符合聚合初始化的情况。或者说聚合初始化是在使用大括号进行值初始化时的一个特殊情况。同样,如果此时处理的是个类对象,而类中包含默认构造函数(=default)则可能是默认初始化。还一种特殊情况,虽然没有默认构造函数,但在其构造函数中包含std::initializer_list类型的形参,则会进行默认初始化的行为。其它的一些细节,在遇到问题后可以参看相关的资料。

那么,初始化有什么作用呢?必须要初始化么?其实很多开发者在实际的应用中,对变量经常不初始化,但程序也跑得好好的。这其实有几个原因:
1、一如前面所讲,整形等基础类型,编译器会提供一个默认的值
2、全局变量也经常会有一个默认的值,而这个默认的值往往不会有什么大问题
3、实际场景对初始化的要求不高
4、调用别人的接口前,通过某种方式(如初始化函数等)单独赋值。
其实广大的程序员也在实际开发中遇到了未初始变量引起的问题,最典型的就是局部变量的初始化未进行,导致意外崩溃。同样,全局变量的初始化,是为了防止UB行为。所以在一些大型的开发公司中,特别是局部变量必须初始化是写入编码规范的。初始化的作用其实就是保证数据和逻辑的可控性。

三、总结

在实际的开发中,一般说很难固定使用哪一种初始化的方式。但总体的原则还是要把握住,以简单方便为前提,安全高效为核心,不必过分拘泥于形式。只要是能够让代码更清晰,符合编码规范,可以各种方式一起上。
抓住耗子的猫才是好猫。

相关文章:

跟我学C++中级篇——C++初始化的方式

一、初始化的方式 在前面的初级篇中对C的初始化有过一个说明。但随着新标准的迭代以及新的方式的应用,本篇对初始化再做一次整体的总结。下面把C的初始化按照时间线进行一个划分: 1、早期初始化 这种初始化中,开发者一般在初学时都会遇到&am…...

设计模式的艺术-代理模式

结构性模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解代理模式 代理模式(Proxy Pattern):给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式是一种对象结构型模式。 代理模式类型较多…...

【Nginx】【SSE】【WebSocket】Nginx配置SSE,WebSocket的转发请求

Nginx 配置 SSE 和 WebSocket 转发 一、配置背景(火狐游览器不支持,建议谷歌游览器开发测试) 在使用 Django 框架开发 Web 应用时,为了实现实时通信,可以选择使用以下两种技术: SSE (Server-Sent Events…...

Gin 应用并注册 pprof

pprof 配置与使用步骤 1. 引言 通过下面操作,你可以顺利集成和使用 pprof 来收集和分析 Gin 应用的性能数据。你可以查看 CPU 使用情况、内存占用、以及其他运行时性能数据,并通过图形化界面进行深度分析。 1. 安装依赖 首先,确保安装了 gi…...

国产编辑器EverEdit - 输出窗口

1 输出窗口 1.1 应用场景 输出窗口可以显示用户执行某些操作的结果,主要包括: 查找类:查找全部,筛选等待操作,可以把查找结果打印到输出窗口中; 程序类:在执行外部程序时(如:命令窗…...

【C++探索之路】STL---string

走进C的世界,也意味着我们对编程世界的认知达到另一个维度,如果你学习过C语言,那你绝对会有不一般的收获,感受到C所带来的码云风暴~ ---------------------------------------begin--------------------------------------- 什么是…...

安装 docker 详解

在平常的开发工作中,我们经常需要部署项目。随着 Docker 容器的出现,大大提高了部署效率。Docker 容器包含了应用程序运行所需的所有依赖,避免了换环境运行问题。可以在短时间内创建、启动和停止容器,大大提高了应用的部署速度&am…...

GCC之编译(8)AR打包命令

GCC之(8)AR二进制打包命令 Author: Once Day Date: 2025年1月23日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章请查看专栏: Linux实践记录_Once-Day的博客-C…...

自定义命令执行器:C++中命令封装的深度探索(C/C++实现)

在现代软件开发中,执行系统命令是一项常见的需求,无论是自动化脚本、系统管理工具,还是需要调用外部程序的复杂应用程序,都离不开对系统命令的调用。然而,直接使用系统调用(如 execve)虽然简单&…...

Android BitmapShader简洁实现马赛克/高斯模糊(毛玻璃),Kotlin(三)

Android BitmapShader简洁实现马赛克/高斯模糊(毛玻璃),Kotlin(三) 发现,如果把(二) Android BitmapShader简洁实现马赛克,Kotlin(二)-CSDN博客 …...

7.渲染管线——几何阶段的概述

几何阶段是渲染管线中的一个重要部分,主要负责处理3D模型的几何信息(比如顶点位置、形状、大小等),并将它们转换为屏幕上的2D图像。用通俗易懂的方式来解释: 通俗解释:几何阶段就像把3D模型“拍扁”成2D照片…...

微信小程序实现自定义日历功能

文章目录 1. 创建日历组件实现步骤:2. 代码实现过程3. 实现效果图4. 关于作者其它项目视频教程介绍 1. 创建日历组件实现步骤: 创建日历组件:首先,你需要创建一个日历组件,包含显示日期的逻辑。样式设计:为…...

Vue3 + TS 实现批量拖拽 文件夹和文件 组件封装

一、html 代码&#xff1a; 代码中的表格引入了 vxe-table 插件 <Tag /> 是自己封装的说明组件 表格列表这块我使用了插槽来增加扩展性&#xff0c;可根据自己需求&#xff0c;在组件外部做调整 <template><div class"dragUpload"><el-dial…...

私域流量池构建与转化策略:以开源链动2+1模式AI智能名片S2B2C商城小程序为例

摘要&#xff1a;随着互联网技术的快速发展&#xff0c;流量已成为企业竞争的关键资源。私域流量池&#xff0c;作为提升用户转化率和增强用户粘性的有效手段&#xff0c;正逐渐受到企业的广泛关注。本文旨在深入探讨私域流量池构建的目的、优势及其在实际应用中的策略&#xf…...

NFT Insider #166:Nifty Island 推出 AI Agent Playground;Ronin 推出1000万美元资助计划

引言&#xff1a;NFT Insider 由 NFT 收藏组织 WHALE Members、BeepCrypto 联合出品&#xff0c; 浓缩每周 NFT 新闻&#xff0c;为大家带来关于 NFT 最全面、最新鲜、最有价值的讯息。每期周报将从 NFT 市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟…...

Keepalived实现HAProxy高可用搭建

Keepalived实现HAProxy高可用 文章目录 Keepalived实现HAProxy高可用拓扑表格如下拓扑结构&#xff08;示例&#xff09;nginx安装&#xff08;所有server&#xff09;HAProxy安装&#xff08;主备机相同&#xff09;HAProxy配置&#xff08;主备机相同&#xff09; 注释如下内…...

HashTable, HashMap, ConcurrentHashMap 之间的区别

一、HashTable 只是将关键方法加上了锁&#xff08;synchronized关键字&#xff09;。 缺点&#xff1a;1.如果多线程访问同一个HashTable就回直接造成锁冲突。 2.HashTable的size属性也是通过 synchronized来控制同步的&#xff0c;效率比较低。 3.在扩容时会涉及大量的拷贝…...

如何确保Spring单例Bean在高并发环境下的安全性?

在Spring中&#xff0c;单例Bean就像是一个“公共的水杯”&#xff0c;整个应用程序中的所有线程都会共享这一个实例。在大部分情况下&#xff0c;这没什么问题&#xff0c;但如果多个线程同时想要修改这个“水杯”里的内容&#xff0c;就可能会出现问题了。 想象一下&#xff…...

【2024年华为OD机试】 (A卷,200分)- 工单调度策略(JavaScriptJava PythonC/C++)

一、问题描述 问题描述 华为工单调度系统需要根据不同的策略调度外线工程师(FME)修复工单。每个工单有一个修复时间要求(SLA时间),在SLA时间内完成修复的工单可以获得对应的积分,超过SLA时间完成的工单不获得积分,但必须完成该工单。目标是设计一种调度策略,使得外线…...

Linux 内核中的高效并发处理:深入理解 hlist_add_head_rcu 与 NAPI 接口

在 Linux 内核的开发中,高效处理并发任务和数据结构的管理是提升系统性能的关键。特别是在网络子系统中,处理大量数据包的任务对性能和并发性提出了极高的要求。本文将深入探讨 Linux 内核中的 hlist_add_head_rcu 函数及其在 NAPI(网络接收处理接口)中的应用,揭示这些机制…...

Alibaba Spring Cloud 六 Seata 的核心组件:RM

在 Alibaba Spring Cloud Seata 中&#xff0c;Resource Manager (RM) 是三大核心组件之一。它主要负责管理分支事务中的资源&#xff08;如数据库、文件等&#xff09;&#xff0c;并与 Transaction Coordinator (TC) 协作完成分支事务的注册、提交和回滚。RM 是分布式事务实际…...

【Linux】列出所有连接的 WiFi 网络的密码

【Linux】列出所有连接的 WiFi 网络的密码 终端输入 sudo grep psk /etc/NetworkManager/system-connections/*会列出所有连接过 Wifi 的信息&#xff0c;格式类似 /etc/NetworkManager/system-connections/AAAAA.nmconnection:pskBBBBBAAAAA 是 SSID&#xff0c;BBBBB 是对…...

snippets router pinia axios mock

文章目录 补充VS Code 代码片段注册自定义组件vue routerpinia删除vite创建项目时默认的文件axiosmock3.0.x版本的 viteMockServe 补充 为文章做补充&#xff1a;https://blog.csdn.net/yavlgloss/article/details/140063387 VS Code 代码片段 为当前项目创建 Snippets {&quo…...

C#常考随笔2:函数中多次使用string的+=处理,为什么会产生大量内存垃圾(垃圾碎片),有什么好的方法可以解决?

在 C# 中&#xff0c;由于string类型是不可变的&#xff0c;当在函数中多次使用操作符来拼接字符串时&#xff0c;每次操作都会创建一个新的string对象&#xff0c;旧的对象则成为垃圾对象&#xff0c;这会导致大量的内存分配和垃圾回收&#xff0c;产生内存垃圾和碎片。 在需…...

GitLab配置免密登录和常用命令

SSH 免密登录 Windows免密登录 删除现有Key 访问目录&#xff1a;C:\Users\Administrator\ .ssh&#xff0c;删除公钥&#xff1a;id_rsa.pub &#xff0c;私钥&#xff1a;id_rsa 2.生成.ssh 秘钥 运行命令生成.ssh 秘钥目录&#xff08; ssh-keygen -t rsa -C xxxxxx126.…...

编码器和扩散模型

目录 摘要abstract1.自动编码器2.变分编码器&#xff08;VAE&#xff09;3.论文阅读3.1 介绍3.2 方法3.3 结论 4.总结参考文献 摘要 本周学习了自动编码器&#xff08;AE&#xff09;和变分自动编码器&#xff08;VAE&#xff09;的基本原理与实现&#xff0c;分析其在数据降维…...

three.js用粒子使用canvas生成的中文字符位图材质

three.js用粒子使用canvas生成中文字符材质 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Three.…...

数据结构与算法之堆: LeetCode 208. 实现 Trie (前缀树) (Ts版)

实现 Trie (前缀树) https://leetcode.cn/problems/implement-trie-prefix-tree/description/ 描述 Trie&#xff08;发音类似 “try”&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&am…...

在 Linux 中使用 nslookup命令

什么是 nslookup? nslookup 命令是名称服务器查找的缩写&#xff0c;是一种网络管理工具&#xff0c;用于获取域名的 IP 地址或其他 DNS 记录信息&#xff0c;通常用于解决 DNS 或名称解析问题 nslookup一般语法&#xff0c;<domain-name>是您要查询的域名&#xff0c…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.1 从零搭建NumPy环境:安装指南与初体验

1. 从零搭建NumPy环境&#xff1a;安装指南与初体验 NumPy核心能力图解&#xff08;架构图&#xff09; NumPy 是 Python 中用于科学计算的核心库&#xff0c;它提供了高效的多维数组对象以及用于处理这些数组的各种操作。NumPy 的核心能力可以概括为以下几个方面&#xff1a…...

PHP校园助手系统小程序

&#x1f511; 校园助手系统 —— 智慧校园生活 &#x1f4f1;一款基于ThinkPHPUniapp框架深度定制的校园助手系统&#xff0c;犹如一把智慧之钥&#xff0c;专为校园团队精心打造&#xff0c;解锁智慧校园生活的无限精彩。它独家适配微信小程序&#xff0c;无需繁琐的下载与安…...

2_高并发内存池_各层级的框架设计及ThreadCache(线程缓存)申请内存设计

一、高并发内存池框架设计 高并发池框架设计&#xff0c;特别是针对内存池的设计&#xff0c;需要充分考虑多线程环境下&#xff1a; 性能问题锁竞争问题内存碎片问题 高并发内存池的整体框架设计旨在提高内存的申请和释放效率&#xff0c;减少锁竞争和内存碎片。 高并发内存…...

在线可编辑Excel

1. Handsontable 特点&#xff1a; 提供了类似 Excel 的表格编辑体验&#xff0c;包括单元格样式、公式计算、数据验证等功能。 支持多种插件&#xff0c;如筛选、排序、合并单元格等。 轻量级且易于集成到现有项目中。 具备强大的自定义能力&#xff0c;可以调整外观和行为…...

物业管理系统源码优化物业运营模式实现服务智能化与品质飞跃

内容概要 在当今快速发展且竞争激烈的市场环境中&#xff0c;物业管理面临着众多挑战&#xff0c;而“物业管理系统源码”的优化&#xff0c;无疑为解决这些问题提供了有效的途径。这些优化不仅提升了物业管理的效率&#xff0c;还实现了服务智能化&#xff0c;推动了物业运营…...

双足机器人开源项目

双足机器人&#xff08;也称为人形机器人或仿人机器人&#xff09;是一个复杂的领域&#xff0c;涉及机械设计、电子工程、控制理论、计算机视觉等多个学科。对于想要探索或开发双足机器人的开发者来说&#xff0c;有许多开源项目可以提供帮助。这些项目通常包括硬件设计文件、…...

第五部分:Linux中的gcc/g++以及gdb和makefile

目录 1、编译器gcc和g 1.1、预处理&#xff08;进行宏替换) 1.2、编译&#xff08;生成汇编) 1.3、汇编&#xff08;生成机器可识别代码&#xff09; 1.4、连接&#xff08;生成可执行文件或库文件&#xff09; 1.5、gcc编译器的使用 2、Linux调试器-gdb使用 2.1、debug…...

decison tree 决策树

熵 信息增益 信息增益描述的是在分叉过程中获得的熵减&#xff0c;信息增益即熵减。 熵减可以用来决定什么时候停止分叉&#xff0c;当熵减很小的时候你只是在不必要的增加树的深度&#xff0c;并且冒着过拟合的风险 决策树训练(构建)过程 离散值特征处理&#xff1a;One-Hot…...

GPU算力平台|在GPU算力平台部署AI虚拟换衣模型(CatVTON)的应用实战教程

文章目录 一、GPU算力服务平台概述智能资源分配优化的Kubernetes架构按需计费安全保障平台特色功能 二、平台账号注册流程AI虚拟换衣模型(CatVTON)的应用实战教程AI虚拟换衣模型(CatVTON)的介绍AI虚拟换衣模型(CatVTON)的部署步骤 一、GPU算力服务平台概述 蓝耘GPU算力平台专为…...

使用云服务器自建Zotero同步的WebDAV服务教程

Zotero 是一款广受欢迎的文献管理软件&#xff0c;其同步功能可以通过 WebDAV 实现文献附件的同步。相比 Zotero 官方提供的300MB免费存储服务&#xff0c;自建 WebDAV 服务具有存储空间大、成本低以及完全控制数据的优势。本文将详细介绍如何使用云服务器自建 WebDAV 服务&…...

单片机基础模块学习——按键

一、按键原理图 当把跳线帽J5放在右侧&#xff0c;属于独立按键模式&#xff08;BTN模式&#xff09;&#xff0c;放在左侧为矩阵键盘模式&#xff08;KBD模式&#xff09; 整体结构是一端接地&#xff0c;一端接控制引脚 之前提到的都是使用了GPIO-准双向口的输出功能&#x…...

FlinkSql使用中rank/dense_rank函数报错空指针

问题描述 在flink1.16(甚至以前的版本)中&#xff0c;使用rank()或者dense_rank()进行排序时&#xff0c;某些场景会导致报错空指针NPE(NullPointerError) 报错内容如下 该报错没有行号/错误位置&#xff0c;无法排查 现状 目前已经确认为bug&#xff0c;根据github上的PR日…...

WPF基础 | WPF 基础概念全解析:布局、控件与事件

WPF基础 | WPF 基础概念全解析&#xff1a;布局、控件与事件 一、前言二、WPF 布局系统2.1 布局的重要性与基本原理2.2 常见布局面板2.3 布局的测量与排列过程 三、WPF 控件3.1 控件概述与分类3.2 常见控件的属性、方法与事件3.3 自定义控件 四、WPF 事件4.1 路由事件概述4.2 事…...

【AIGC学习笔记】扣子平台——精选有趣应用,探索无限可能

背景介绍&#xff1a; 由于近期业务发展的需求&#xff0c;我开始接触并深入了解了扣子平台的相关知识&#xff0c;并且通过官方教程自学了简易PE工作流搭建的技巧。恰逢周会需要准备与工作相关的分享主题&#xff0c;而我作为一个扣子平台的初学者&#xff0c;也想探索一下这…...

mock可视化生成前端代码

介绍&#xff1a;mock是我们前后端分离的必要一环、ts、axios编写起来也很麻烦。我们就可以使用以下插件&#xff0c;来解决我们的问题。目前支持vite和webpack。&#xff08;配置超级简单&#xff01;&#xff09; 欢迎小伙伴们提issues、我们共建。提升我们的开发体验。 vi…...

csapp2.4节——浮点数

目录 二进制小数 十进制小数转二进制小数 IEEE浮点表示 规格化表示 非规格化表示 特殊值 舍入 浮点运算 二进制小数 类比十进制中的小数&#xff0c;可定义出二进制小数 例如1010.0101 小数点后的权重从-1开始递减。 十进制小数转二进制小数 整数部分使用辗转相除…...

Java面试题2025-Spring

讲师&#xff1a;邓澎波 Spring面试专题 1.Spring应该很熟悉吧&#xff1f;来介绍下你的Spring的理解 1.1 Spring的发展历程 先介绍Spring是怎么来的&#xff0c;发展中有哪些核心的节点&#xff0c;当前的最新版本是什么等 通过上图可以比较清晰的看到Spring的各个时间版本对…...

element tbas增加下拉框

使用Tabs 标签页的label插槽&#xff0c;嵌入Dropdown 下拉菜单&#xff0c;实现Tabs 标签页增加下拉切换功能 Tabs 标签页 tab-click"事件"&#xff08;这个事件当中到拥有下拉框的tab里时&#xff0c;可以存一下Dropdown 第一个菜单的id&#xff0c;实现点击到拥有…...

Windows Defender添加排除项无权限的解决方法

目录 起因Windows Defender添加排除项无权限通过管理员终端添加排除项管理员身份运行打开PowerShell添加/移除排除项的命令 起因 博主在打软件补丁时&#xff0c;遇到 Windows Defender 一直拦截并删除文件&#xff0c;而在 Windows Defender 中无权限访问排除项。尝试通过管理…...

Git上传了秘钥如何彻底修改包括历史记录【从安装到实战详细版】

使用 BFG Repo-Cleaner 清除 Git 仓库中的敏感信息 1. 背景介绍 在使用 Git 进行版本控制时&#xff0c;有时会不小心将敏感信息&#xff08;如 API 密钥、密码等&#xff09;提交到仓库中。即使后续删除&#xff0c;这些信息仍然存在于 Git 的历史记录中。本文将介绍如何使用…...

贪心专题----

看了讲解&#xff0c;贪心似乎没有定式的解题方法&#xff0c;更多是按照常识来&#xff1b; 455. 分发饼干 将胃口和饼干尺寸 都排序&#xff1b; 然后遍历胃口&#xff0c;从饼干尺寸的最后一个开始。 这里为什么是遍历胃口&#xff1f; 当胃口大于饼干尺寸&#xff0c;…...