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

C++笔记-list

list即是我们之前学的链表,这篇主要还是讲解list的底层实现,前面会讲一些list区别于前面string和vector的一些接口以及它们的注意事项。

一.list的基本使用

和之前的string,vector一样,有很多之前见过的一些接口,经过前面两篇的讲解,很多接口不用讲解相信大家都会使用,主要就是Operations中的一些接口之前没有讲过,前面主要就是讲解这些接口。

这里主要讲splice,remove,unique和sort:

1.1splice:
splice的作用是将一个列表中的内容拷贝给另一个链表。

可以看出splice有三种传参的方式,每种方式都会产生不一样的结果:
1.1.1第一种传参

第一种传参中的两个参数:第一个参数就是从目标位置开始拷贝数据过去,第二个参数代表某个链表。

第一种传参方式就是把第二个参数中链表的所有数据都拷贝到第一个参数之前,结果如第二张图所示,lt1的所有数据都被拷贝到lt2的begin位置之前。

1.1.2第二种传参

第二种传参比第一种多了一个参数,意思就是把具体某个位置的值拷贝到目标位置之前,就比如上图所示的将lt1中的第一个数据拷贝过去。

1.1.3第三种传参方式

第三种传参就是把某个范围的数据拷贝过去,就比如上图中将lt1中的4到6拷贝过去。

这里可能会有人疑惑:为什么第三个参数直接写lt1.begin()+3呢?这样写不是更简洁吗?

这个问题我下面讲sort时会讲,这里先跳过。

splice还有一种玩法就是可以将自己的数据拷贝到某个位置之前,就比如将最后一个数据拷贝到第一个位置:

这样就将6放到了第一个位置,这种用法是要比前面的用法更为普遍的。

1.2remove

list中remove作用是将链表中所有和你要删除的值相同的数据一并删除。

如上图所示,这里就把所有的2都给删除了,remove的基本用法就是如此。

1.3unique

unique的作用就是删除一个有序链表中重复的数据。

通过unique就可以把重复的数据给删掉。

注意:一定要是有序的,如果不是有序的就无法做到删除重复的数据。

此时链表数据不是有序的,unique就没有发挥作用。

1.4sort

sort的作用相信就不用多说大家都知道,但是在这里我们要思考两个问题:

1.string和vector都没有实现sort接口,为什么list要单独实现?

2.list实现的sort效率怎么样?

先来解释第一个问题:
这个问题的答案也能解释上面splice出现的疑点,这就涉及到迭代器的分类。

迭代器分为三类(移动迭代方式):

1.单向迭代器,如:forword_list/unordered_map...   ++

2.双向迭代器,如:list/map...   ++/--

3.随机迭代器,如:string/vector/deque.. ++/--/+/-

后面就是它们能够进行的移动迭代方式,而语法库中的sort参数是随机迭代器,list都是双向迭代器,所以不能使用语法库中的sort,而上面的splice出现的疑点也是因为双向迭代器不能+/-,所以不能那样使用。

中间蓝色的单词的意思就是双向迭代器。

这是string和vector的随机迭代器。

这是语法库中的sort的参数要求,上去就要求随机迭代器,所以list才需要自己实现。

而迭代器的分类和之前讲的权限放大和缩小的概念有些类似,就是如果函数参数要求是双向迭代器,此时我们传随机迭代器也是可以的,相当于权限的缩小,同理单向迭代器也是如此。

双向迭代器和随机迭代器就是特殊的单向迭代器。

再来说第二个问题:
我就直接说结论,list自己实现的sort效率不高,比起语法库中的sort效率低了很多。

不过在数量较少时,效率差不多,但是在数量较大时效率就会低很多,举个例子:

在数量较大时,把list中的数据拷贝到vector,调用语法库中的sort,再把数据传回list的效率都比直接调用list本身的sort高。

二.list的底层实现

2.1list框架的实现

链表我们之前在数据结构阶段都了解过,链表要把整个链表和单个结点区分开,所以这里也是同理。

这里定义哨兵位,相信大家都知道底层list其实就是双向带头循环链表。

可能有人会疑惑:为什么单个结点要用struct而不用class?

其实我们在实际应用中,想让别人使用的用class,不想别人访问的用struct,我们只想让别人用链表整体,而不能直接访问我一个结点中的变量。

在单个结点类中运用初始化列表进行初始化,这样在list类中初始化哨兵位时就不需要传数据,直接创捷一个哨兵位,并让prev和next都指向自己即可,和之前讲链表是一样的。

2.2push_back尾插

思路和之前讲链表是一样的,创建一个节点,并更新哨兵位,原尾节点和新建结点的next和prev即可。

2.3iterator迭代器的实现

之前在string中讲过迭代器并不就一定是指针,在list中印证了。

为什么在list中要单独实现iterator迭代器呢?

因为在之前的string和vector中,它们两个底层都是数组,它们的原生指针就能完成解引用和++等操作,而链表我们知道解引用是访问一个结点,而一个结点不止有数据,还有prev和next,而迭代器我们要求解引用就是直接拿出其中的数据。

包括++等操作,链表底层并不是数组,每个结点的地址并不是连续的,所以通过++等操作是不能找到相邻的结点的。

基于以上两点,所以在list终究要我们自己实现iterator迭代器,而自定义类型的迭代器其实执行的还是指针的作用,所以成员变量依旧还是单个结点的地址。

其中里面所实现的各种比较我就不过多赘述了,之前都讲过,这里主要讲解一下为什么多加了一个类型Ref。

因为不仅有iterator,还有const_iterator,两者的区别无非就是解引用的值能不能修改的问题,但是如果我们没有多加Ref这个类型,那我们是不是还要写一个函数重载?

但是从之前学过的函数重载中我们知道,是不能以返回值不同而进行函数重载的,程序会报错,

那要解决这个问题就只能在单独写一个const_iterator类,内容和iterator一样,除了解引用符号的重载这一个不同而已。

这样写代码就太冗余了,有很多重复代码,但是我们加一个类型Ref就可以解决这个问题,根据传过去的参数不同将其分为iterator和const_iterator:

可能有人会疑惑:iterator类不需要实现析构函数吗?

我们所实现的iterator只是用于解引用和遍历链表而已,不能使用后直接把这个节点给销毁了,所以不能实现析构函数,相应的也不需要实现拷贝构造函数。

上面的结点类也是一样,析构操作只需要在list类中实现即可。

另外其中的!=,==等符号的重载是因为现在iterator是自定义类型,不再是原生指针,所以如果要比较自定义类型,就要重载相应的符号。

2.3begin和end

实现了迭代器iterator,接下来就要实现begin和end,也是分为普通和const版本,注意返回值是需要调用iterator类并进行传参的,头结点是哨兵位的下个结点,end返回就是哨兵位。

2.4insert

insert实现逻辑和之前一样,找到目标结点的prev和next,并更新三个结点的next和prev即可。

2.5erase

 

相信现在看到这个返回值大家就知道erase会出现什么问题了,没错,还是迭代器失效的问题,所以还是要在erase后更新指针。

需要注意的地方有两个:

1.目标结点不能是哨兵位

2.删除当前结点后,要更新指针的位置,指向下个结点

2.6push_front,pop_back和pop_front

这三个包括之前实现的push_back就都可以通过复用insert和erase来实现,要注意的就是尾删不能直接传end,要让end--才是尾结点的位置。

2.7clear

clear的作用就是销毁除哨兵位之外的所有结点,实现起来也较为容易,遍历整个链表挨个销毁即可。

2.7拷贝构造函数

实现拷贝构造函数也是为了深拷贝做准备,一样也要创建哨兵位,不过这和构造函数的代码一样,所以其实可以将这段代码封装成一个函数也可以,这里因为就几行代码所以我就没整。

下面就是遍历目标链表,把相应的节点push_back进去即可。

2.8=符号重载

以及是需要用到std标准库中的swap函数进行操作,最后=符号重载复用即可。

我们再看最后一种情况:

当传进去的参数类型是自定义类型时,我们要访问其中的数据要用到->符号,但是vector是可以直接用的,因为它用的是原生指针,而list不能使用,因为是自定义类型迭代器,所以在这里我们要自己实现->符号。

和上面的解引用重载一样,这里我们引进一种类型Ptr,代表要输出的数据的地址,所以也分为普通和const版本,作用也就和vector原生指针作用是一样的。

此时就不再会报错,但是可能有人会觉得很奇怪:不应该是两个箭头吗?

第一个箭头返回的是指针,应该还有一个箭头才能指向数据啊。

这个想法没错,出现这现象的原因是为了可读性高,编译器把另一个箭头给省略了。

以上就是list的内容。

相关文章:

C++笔记-list

list即是我们之前学的链表,这篇主要还是讲解list的底层实现,前面会讲一些list区别于前面string和vector的一些接口以及它们的注意事项。 一.list的基本使用 和之前的string,vector一样,有很多之前见过的一些接口,经过…...

机器学习 | 细说Deep Q-Network(DQN)

文章目录 📚传统Q学习的局限性📚DQN介绍🐇核心思想🐇关键技术🐇DQN的工作流程⭐️流程分步讲解🔄 整体流程循环小结 🐇DQN的局限性及改进方向 👀参考视频&博客 什么是 DQN (Rein…...

【SpringBoot+Vue自学笔记】003 SpringBoot Controll

跟着这位老师学习的:https://www.bilibili.com/video/BV1nV4y1s7ZN?vd_sourceaf46ae3e8740f44ad87ced5536fc1a45 这段话的意思其实是:Spring Boot 简化了传统 Web 项目的搭建流程,让你少折腾配置,直接开搞业务逻辑。 &#x1f52…...

Sentinel源码—4.FlowSlot实现流控的原理一

大纲 1.FlowSlot根据流控规则对请求进行限流 2.FlowSlot实现流控规则的快速失败效果的原理 3.FlowSlot实现流控规则中排队等待效果的原理 4.FlowSlot实现流控规则中Warm Up效果的原理 1.FlowSlot根据流控规则对请求进行限流 (1)流控规则FlowRule的配置Demo (2)注册流控监…...

跟康师傅学Java-基础语法

跟康师傅学Java-基础SE 一、Java语言概述 1. 基本概念 什么是Java?干什么的? 前端是服务员,java做后台的,服务器,好比餐馆的厨师! Java之父:詹姆斯.高斯林(James Gosling) 软件:一系列按照特定顺序组织的计算机数据和指令的集合。分为系统软件和应用软件。 程序…...

Java语言实现递归调用算法

1. 递归调用原理 递归是一种编程技巧,其中函数直接或间接地调用自身。递归的核心思想是将一个复杂问题分解为更小的子问题,直到问题变得足够简单可以直接解决。递归通常包含两个部分: 1. 基础情况(Base Case)&#xff…...

【数据结构_10】二叉树(1)

一、树 树是一种非线性的数据结构,是由n个有限节点组成一个具有层次关系的集合。树的每个节点能够延伸出多个子节点,但每个子节点只能由一个父节点。 树形结构中,子树之间不能有交集,否则就不是树形结构。 二、树的表示形式 1…...

c++:智能指针

1.智能指针使用场景与优势 void Func() { int* array1 new int[10]; int* array2 new int[10]; try { int len, time; cin >> len >> time; cout << Divide(len, time) << endl; } catch (...) { cout << "delete []" << arr…...

RISC-V简介

RISC-V简介 1. RISC-V RISC-V&#xff08;发音为“riskfive”&#xff09;是一个基于精简指令集&#xff08;RISC&#xff09;原则的全新开源指令集架构&#xff08;ISA&#xff09;。其中的字母“V”包含两层意思&#xff0c;一是这是Berkeley从RISCI开始设计的第五代指令集…...

Google Test 与 Google Mock:C++ 测试与模拟的完美结合

Google Test 与 Google Mock&#xff1a;C 测试与模拟的完美结合 摘要 本文深入解析 Google Test&#xff08;GTest&#xff09;和 Google Mock&#xff08;GMock&#xff09;的核心功能与使用方法&#xff0c;探讨两者在 C 项目中的联合应用及集成策略。通过详细的功能介绍、…...

c语言数据结构----------二叉排序树

#include <stdio.h> #include <malloc.h>//定义二叉排序树 typedef struct BSTnode {int key; //节点值int keyNull; //便于地址传递struct BSTnode *lchild;struct BSTnode *rchild; } BSTnode;//往二叉排序树插入结点 int BSTInsert(BSTnode *T, int k) {if (…...

Sysstat学习

Sysstat&#xff08;System Statistics&#xff09;是一个功能强大的开源工具集&#xff0c;用于监控 Linux 系统的性能和资源使用情况&#xff0c;特别适用于 Ubuntu 系统。它包含多个工具&#xff0c;如 sar、iostat、mpstat 和 pidstat&#xff0c;帮助系统管理员实时或历史…...

智能体开发范式革命:Cangjie Magic的颠覆性创新与行业重塑

开篇:一场静悄悄的技术革命 2025年春季,人工智能领域发生了一场意义深远却鲜为人知的变革。仓颉社区推出的Cangjie Magic智能体开发平台,正以润物细无声的方式重塑着AI应用的构建范式。这并非简单的工具迭代,而是一次从底层逻辑到顶层设计的全面革新。本文将带领读者深入探…...

k8s 下 java 服务出现 OOM 后获取 dump 文件

文章目录 背景解决第 1 步:通过 Dockerfile 挂载 NFS 盘第 2 步:修改 dump 路径为 NFS 盘路径第 3 步:OOM dump 验证参考背景 😂 背景:项目部署在RainBond(k8s)环境下,容器出现 OOM 异常后,k8s 会自动进行滚动更新。 恰恰因为滚动更新,会导致原来的容器被删除。这…...

16位海明码解码电路设计教程

## 1. 海明码基本原理 ### 1.1 什么是海明码 海明码(Hamming Code)是一种能够检测并纠正单比特错误的纠错码&#xff0c;由理查德海明(Richard Hamming)于1950年发明。它通过添加几个校验位(奇偶校验位)到原始数据中&#xff0c;使得数据在传输过程中发生单比特错误时能够被检测…...

九、数据库day01--认识

文章目录 一、认识数据库1.数据库分类关系型数据库核⼼要素示例 2. SQL 语⾔3. MySQL 数据库介绍4. 数据库连接⼯具 Navicat连接数据库操作步骤 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、认识数据库 说明: 数据库是专⻔⽤来存储数据的软…...

2.深入剖析 Rust+Axum 类型安全路由系统

摘要 详细解读 RustAxum 路由系统的关键设计原理&#xff0c;涵盖基于 Rust 类型系统的路由匹配机制、动态路径参数与正则表达式验证以及嵌套路由与模块化组织等多种特性。 一、引言 在现代 Web 开发中&#xff0c;路由系统是构建 Web 应用的核心组件之一&#xff0c;它负责…...

深度学习 从入门到精通 day_02

1. 自动微分 自动微分模块torch.autograd负责自动计算张量操作的梯度&#xff0c;具有自动求导功能。自动微分模块是构成神经网络训练的必要模块&#xff0c;可以实现网络权重参数的更新&#xff0c;使得反向传播算法的实现变得简单而高效。 1.1 基础概念 1. 张量 &#xff1a…...

Selenium 实现自动化分页处理与信息提取

Selenium 实现自动化分页处理与信息提取 在 Web 自动化测试或数据抓取场景中&#xff0c;分页处理是一个常见的需求。通过 Selenium&#xff0c;我们可以实现对多页面内容的自动遍历&#xff0c;并从中提取所需的信息。本文将详细介绍如何利用 Selenium 进行自动化分页处理和信…...

【系统搭建】DPDK实现两虚拟机基于testpmd和l2fwd的收发包

testpmd与l2fwd的配合构建一个高性能的虚拟网络测试环境。l2fwd服务工作在数据链路层&#xff0c;使用MAC地址寻址&#xff0c;很多基于DPDK的策略实现可以基于l2fwd进行开发。 一、拓扑结构示意 ------------------- 虚拟化层网络 ------------------- | 虚拟机1 …...

简单接口工具(ApiCraft-Web)

ApiCraft-Web 项目介绍 ApiCraft-Web 是一个轻量级的 API 测试工具&#xff0c;提供了简洁直观的界面&#xff0c;帮助开发者快速测试和调试 HTTP 接口。 功能特点 支持多种 HTTP 请求方法&#xff08;GET、POST、PUT、DELETE&#xff09;可配置请求参数&#xff08;Query …...

C语言数据类型取值范围

32位C语言整型数据类型取值范围 64位C语言整型数据类型取值范围 C语言标准数据类型保证的取值范围 在编写程序时如果要方便移植&#xff0c;我们应该关注的是图2-11的取值范围。 摘录自《CSAPP》。...

【机器学习】大数据时代,模型训练慢如牛?解锁Spark MLlib与分布式策略

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

合成数据赋能AI:从生成到闭环的全景图谱

目录 合成数据赋能AI&#xff1a;从生成到闭环的全景图谱 &#x1f3af; 项目目标 &#x1f4c4; 白皮书 / PPT 大纲结构 一、合成数据概述&#xff08;What & Why&#xff09; 二、合成数据的核心生成技术&#xff08;How&#xff09; 三、合成数据适配任务&#xf…...

CS144 Lab0实战记录:搭建网络编程基础

文章目录 1 实验概述与背景2 ByteStream的设计与实现2.1 字节流抽象概述2.2 实现思路2.3 核心数据结构2.4 Writer实现细节2.5 Reader实现细节 3 WebGet应用实现 1 实验概述与背景 Stanford大学的CS144课程是计算机网络领域最著名的课程之一&#xff0c;其实验设计巧妙地引导学…...

杂记-LeetCode中部分题思路详解与笔记-HOT100篇-其三

时光荏苒啊&#xff0c;没想到这么快就到了四月份... 这个坑好久没写了&#xff0c;现在我们重启一下。 我看了一下之前的笔记&#xff0c;似乎是停留在了链表部分且HOT100中可以说最重要的链表题之一&#xff1a;LRU缓存居然没有写&#xff0c;真是岂有此理&#xff0c;让我…...

【python画图】:从入门到精通绘制完美柱状图

目录 Python数据可视化&#xff1a;从入门到精通绘制完美柱状图一、基础篇&#xff1a;快速绘制柱状图1.1 使用Matplotlib基础绘制1.2 使用Pandas快速绘图 二、进阶篇&#xff1a;专业级柱状图定制2.1 多系列柱状图2.2 堆叠柱状图2.3 水平柱状图 三、专业参数速查表Matplotlib …...

医疗设备预测性维护的合规性挑战与标准化路径研究

摘要 本研究从医疗设备全生命周期管理视角&#xff0c;探讨预测性维护技术面临的特殊合规性挑战及其标准化解决方案。通过分析全球12个主要医疗市场的监管差异&#xff0c;提出基于ISO 23510的通用合规框架&#xff0c;并验证其在三类典型医疗设备&#xff08;生命支持类、影像…...

使用 XWPFDocument 生成表格时固定列宽度

一、XWPFDocument XWPFTable个性化属性 1.初始默认写法 XWPFTable table document.createTable(n, m); //在文档中创建一个n行m列的表格 table.setWidth("100%"); // 表格占页面100%宽度// 通过getRow获取行进行自定义设置 XWPFTableRow row table.getRow(0); XW…...

抽象的https原理简介

前言 小明和小美是一对好朋友&#xff0c;他们分隔两地&#xff0c;平时经常写信沟通&#xff0c;但是偶然被小明发现他回给小美的信好像被人拆开看过&#xff0c;甚至偷偷被篡改过。 对称加密算法 开头的通信过程比较像HTTP服务器与客户端的通信过程&#xff0c;全明文传输…...

Chakra UI框架中响应式断点

默认的断点&#xff1a;base是默认样式&#xff0c;不带任何媒体查询&#xff0c;适用于所有屏幕。 sm是30em&#xff08;约480px&#xff09; md是48em&#xff08;768px&#xff09; lg是62em&#xff08;992px&#xff09; xl是80em&#xff08;1280px&#xff09; 2xl是96e…...

【cocos creator 3.x】cocos creator2.x项目升级3.x项目改动点

1、基本改动 基本改动&#xff1a;去掉了cc.&#xff0c;改成在顶部添加导入 项目升级时候直接将cc.去掉&#xff0c;根据提示添加引用 node只保留position,scale,rotation,layer 其余属性如opacity&#xff0c;如果需要使用需要在节点手动添加UIOpacity组件 3d层和ui层分开…...

【android telecom 框架分析 01】【基本介绍 2】【BluetoothPhoneService为何没有源码实现】

1. 背景 我们会在很多资料上看到 BluetoothPhoneService 类&#xff0c;但是我们在实际 aosp 中确找不到具体的实现&#xff0c; 这是为何&#xff1f; 这是一个很好的问题&#xff01;虽然在车载蓝牙电话场景中我们经常提到类似 BluetoothPhoneService 的概念&#xff0c;但…...

Linux:进程:进程调度

进程在CPU上运行具有以下特性&#xff1a; 竞争、独⽴、并⾏、并发 竞争性:系统进程数⽬众多&#xff0c;⽽CPU资源很少甚至只有一个&#xff0c;所以进程之间是具有竞争属性的。为 了⾼效完成任务&#xff0c;更合理竞争相关资源&#xff0c;便具有了优先级 独⽴性: 为了避…...

2025年探秘特种设备安全管理 A 证:守护安全的关键凭证​

在现代工业与生活中&#xff0c;特种设备如锅炉、压力容器、电梯、起重机械等广泛应用&#xff0c;它们给我们带来便利的同时&#xff0c;也伴随着较高的安全风险。为了确保这些设备的安全运行&#xff0c;保障人民生命财产安全&#xff0c;特种设备安全管理显得尤为重要&#…...

WebSocket 实现数据实时推送原理

WebSocket 实现数据实时推送的核心机制在于其全双工通信能力和持久的连接特性。以下是其工作原理的详细步骤&#xff1a; 1. 握手阶段&#xff08;HTTP 升级协议&#xff09; 客户端发起请求&#xff1a;通过发送一个带有特殊头部的 HTTP 请求&#xff0c;请求协议升级。 GET …...

快速迭代收缩-阈值算法(FISTA)

文章目录 1. 数学与优化基础2. FISTA 算法的原理、推导与机制3. Matlab 实现4. FISTA 在图像处理与压缩感知中的应用4.1. 基于小波稀疏先验的图像去噪4.2 压缩感知图像重建 1. 数学与优化基础 在许多信号处理与机器学习问题中&#xff0c;我们希望获得稀疏解&#xff0c;即解向…...

XC6SLX100T-2FGG484I 赛灵思 XilinxFPGA Spartan-6

XC6SLX100T-2FGG484I 是Xilinx 推出的Spartan-6 LXT 系列FPGA芯片&#xff0c;采用45nm工艺设计&#xff0c;以高性价比和低功耗为核心 系列定位&#xff1a;Spartan‑6 LXT&#xff0c;中端逻辑与 DSP 加速 逻辑资源&#xff1a;101 261 个逻辑单元&#xff08;LE&#xff0…...

DP 32bit位宽数据扰码实现和仿真

关于DisplayPort 1.4协议中扰码用的16-bit LFSR的移位8个时钟周期后的输出表达式我们已经用迭代的方法推导过&#xff0c;那么移位32个时钟周期的输出表达式同样可以迭代32次推导出&#xff0c;或者将移位8个时钟的输出表达式迭代3次也可以得到。以下就是移位32个时钟周期的输出…...

Electricity Market Optimization 探索系列(V)

本文参考链接link \hspace{1.6em} 众所周知, 社会福利是指消费者剩余和生产者剩余的和&#xff0c;也等价于产品的市值减去产品的成本&#xff0c;在电力市场中也非常关注社会福利这一概念&#xff0c;基于电力商品的同质性的特点&#xff0c;我们引入反价格需求函数来形象地刻…...

vue3 element-plus el-time-picker控制只显示时 分,并且控制可选的开始结束时间

只显示时分 控制只显示时分 HH:mm 控制只显示时分秒 HH:mm:ss 全部代码&#xff1a; <template><el-time-pickerstyle"width: 220px !important;"v-model"timeValue"format"HH:mm"value-format"HH:mm"/> </template&…...

从技术本质到未来演进:全方位解读Web的过去、现在与未来

一、Web的本质定义 Web(万维网)是一种基于**超文本传输协议(HTTP)和统一资源标识符(URI)**构建的分布式信息系统。它的核心在于通过超链接将全球范围内的信息资源连接成网状结构,使任何接入互联网的设备都能访问这些资源。Web的本质特征体现在三个方面: 跨平台性:无论…...

C++十进制与十六进制

在C中&#xff0c;可以使用不同的方式来表示十进制和十六进制数值。下面是一个简单的示例代码&#xff0c;展示了如何在C中表示和输出十进制和十六进制数值&#xff1a; #include <iostream> #include <iomanip>int main() {int decimalValue 255; // 十进制数值…...

MySQL基本语法

本地登录&#xff1a;mysql -u 用户名 -p 查看数据库&#xff1a;show databeases 创建库&#xff1a;create database 名字&#xff1b; 删除库&#xff1a;drop database 名字&#xff1b; 选择库&#xff1a;use 名字&#xff1b; 创建表&#xff1a;create table 表名 在…...

机器学习有多少种算法?当下入门需要全部学习吗?

机器学习算法如同工具箱中的器械——种类繁多却各有专攻。面对数百种公开算法&#xff0c;新手常陷入"学不完"的焦虑。本文将拆解算法体系&#xff0c;为初学者指明高效学习路径。 一、算法森林的全景地图 机器学习算法可按四大维度分类&#xff1a; 监督学习&#…...

【c语言】深入理解指针2

文章目录 一、指针数组指针数组模拟二维数组 二、数组指针二维数组传参的本质 三、字符指针变量四、函数指针变量4.1. 函数指针的应用4.2 两端有趣的代码4.3. typedef关键字4.3.1 typedef 的使用4.3.2. typedef与#define对比 五、函数指针数组函数指针数组的应用 一、指针数组 …...

Nacos

Nacos是阿里巴巴的产品&#xff0c; 现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在国内受欢迎程度较高。 官网地址&#xff1a;Redirecting to: https://nacos.io/ GitHub&#xff1a; https://github.com/alibaba/nacos 1.Nacos快入门 Nacos可以直…...

Linux,redis群集模式,主从复制,读写分离

redis的群集模式 主从模式 &#xff08;单项复制&#xff0c;主复制到从&#xff09; 一主两从 一台主机上的一主两从 需要修改三个配置文件 主要端口不一样 redis-8001.conf redis-8002.conf redis-8003.conf 哨兵模式 分布式集群模式 redis 安装部署 1&#xff0c;下载…...

《手环表带保养全攻略:材质、清洁与化学品避坑指南》

系列文章目录 文章目录 系列文章目录前言一、表带材质特性与专属养护方案二、清洁剂使用红黑榜三、家庭清洁实验&#xff1a;化学反应警示录四、保养实践方法论总结 前言 手环作为现代生活的智能伴侣&#xff0c;表带材质选择丰富多样。从柔软亲肤的皮质到耐用耐磨的金属&…...

【Leetcode 每日一题 - 补卡】1534. 统计好三元组

问题背景 给你一个整数数组 a r r arr arr&#xff0c;以及 a 、 b 、 c a、b 、c a、b、c 三个整数。请你统计其中好三元组的数量。 如果三元组 ( a r r [ i ] , a r r [ j ] , a r r [ k ] ) (arr[i], arr[j], arr[k]) (arr[i],arr[j],arr[k]) 满足下列全部条件&#xff…...