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

pytorch小记(十):pytorch中torch.tril 和 torch.triu 详解

pytorch小记(十):pytorch中torch.tril 和 torch.triu 详解

  • PyTorch `torch.tril` 和 `torch.triu` 详解
    • 1. `torch.tril`(计算下三角矩阵)
      • 📌 作用
      • 🔍 语法
      • 🔹 参数
      • 📌 示例
      • 🔍 `diagonal` 参数
      • 🔍 `torch.tril` 的应用
    • 2. `torch.triu`(计算上三角矩阵)
      • 📌 作用
      • 🔍 语法
      • 🔹 参数
      • 📌 示例
      • 🔍 `diagonal` 参数
    • 3. `torch.tril` vs `torch.triu` 对比
    • 总结


PyTorch torch.triltorch.triu 详解

在数值计算和深度学习中,下三角矩阵(Lower Triangular Matrix)上三角矩阵(Upper Triangular Matrix) 是非常常见的矩阵操作。PyTorch 提供了 torch.tril()torch.triu() 这两个函数,分别用于计算下三角矩阵和上三角矩阵。


1. torch.tril(计算下三角矩阵)

📌 作用

torch.tril 返回输入张量的 下三角部分,即:

  • 保留 主对角线及其以下的元素
  • 主对角线以上的元素全部变为 0

🔍 语法

torch.tril(input, diagonal=0)

🔹 参数

参数说明
input输入张量
diagonal控制对角线位置(默认 0
diagonal=0保留主对角线 及其以下的元素
diagonal>0向上偏移,保留主对角线以上 diagonal
diagonal<0向下偏移,移除 -diagonal 行的主对角线元素

📌 示例

import torch# 创建一个 4×4 的矩阵
A = torch.tensor([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]
])print("原始矩阵 A:")
print(A)# 计算 A 的下三角矩阵
L = torch.tril(A)
print("\nA 的下三角矩阵(diagonal=0):")
print(L)

输出:

原始矩阵 A:
tensor([[ 1,  2,  3,  4],[ 5,  6,  7,  8],[ 9, 10, 11, 12],[13, 14, 15, 16]])A 的下三角矩阵(diagonal=0):
tensor([[ 1,  0,  0,  0],[ 5,  6,  0,  0],[ 9, 10, 11,  0],[13, 14, 15, 16]])

💡 说明:主对角线上的元素保留,其上的元素变为 0


🔍 diagonal 参数

print(torch.tril(A, diagonal=1))  # 保留主对角线以上 1 行
print(torch.tril(A, diagonal=-1)) # 移除主对角线

输出:

A 的下三角矩阵(diagonal=1):
tensor([[ 1,  2,  0,  0],[ 5,  6,  7,  0],[ 9, 10, 11, 12],[13, 14, 15, 16]])A 的下三角矩阵(diagonal=-1):
tensor([[ 0,  0,  0,  0],[ 5,  0,  0,  0],[ 9, 10,  0,  0],[13, 14, 15,  0]])

🔺 diagonal=1向上偏移,保留 1 行主对角线以上的元素。
🔻 diagonal=-1向下偏移,移除主对角线。


🔍 torch.tril 的应用

📌 用于 Masking(掩码)

seq_length = 5
mask = torch.tril(torch.ones(seq_length, seq_length))  # 创建一个下三角 Mask
print(mask)

输出:

tensor([[1., 0., 0., 0., 0.],[1., 1., 0., 0., 0.],[1., 1., 1., 0., 0.],[1., 1., 1., 1., 0.],[1., 1., 1., 1., 1.]])

💡 Transformer 中,这种 Mask 用于防止模型在训练时提前看到未来的信息。


2. torch.triu(计算上三角矩阵)

📌 作用

torch.triu 返回输入张量的 上三角部分,即:

  • 保留 主对角线及其以上的元素
  • 主对角线以下的元素全部变为 0

🔍 语法

torch.triu(input, diagonal=0)

🔹 参数

参数说明
input输入张量
diagonal=0保留主对角线及其以上的元素
diagonal>0移除 diagonal 行的主对角线元素
diagonal<0保留主对角线以下 -diagonal

📌 示例

U = torch.triu(A)
print("A 的上三角矩阵(diagonal=0):")
print(U)

输出:

A 的上三角矩阵(diagonal=0):
tensor([[ 1,  2,  3,  4],[ 0,  6,  7,  8],[ 0,  0, 11, 12],[ 0,  0,  0, 16]])

💡 说明:主对角线上的元素及其上的元素保留,下面的元素变为 0


🔍 diagonal 参数

print(torch.triu(A, diagonal=1))  # 移除主对角线元素
print(torch.triu(A, diagonal=-1)) # 保留主对角线以下 1 行

输出:

A 的上三角矩阵(diagonal=1):
tensor([[ 0,  2,  3,  4],[ 0,  0,  7,  8],[ 0,  0,  0, 12],[ 0,  0,  0,  0]])A 的上三角矩阵(diagonal=-1):
tensor([[ 1,  2,  3,  4],[ 5,  6,  7,  8],[ 0, 10, 11, 12],[ 0,  0, 15, 16]])

🔺 diagonal=1:移除主对角线的元素,仅保留主对角线以上的元素。
🔻 diagonal=-1:允许保留主对角线以下 1 行的元素。


3. torch.tril vs torch.triu 对比

作用torch.tril(A)torch.triu(A)
计算结果取下三角部分取上三角部分
对角线控制diagonal=0 保留主对角线diagonal=0 保留主对角线
diagonal>0保留主对角线以上元素移除主对角线部分元素
diagonal<0移除主对角线部分元素保留主对角线以下部分

总结

  • torch.tril()下三角矩阵,可以用于 Cholesky 分解Transformer Masking
  • torch.triu()上三角矩阵,常用于 线性代数计算矩阵变换

🚀 你可以根据不同的需求选择合适的函数,在 PyTorch 中高效处理矩阵运算!

相关文章:

pytorch小记(十):pytorch中torch.tril 和 torch.triu 详解

pytorch小记&#xff08;十&#xff09;&#xff1a;pytorch中torch.tril 和 torch.triu 详解 PyTorch torch.tril 和 torch.triu 详解1. torch.tril&#xff08;计算下三角矩阵&#xff09;&#x1f4cc; 作用&#x1f50d; 语法&#x1f539; 参数&#x1f4cc; 示例&#x1…...

C语言每日一练——day_11

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第十一天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中…...

HCIA-PPP实验

一、LCP链路控制协议 1、链路建立阶段&#xff1a;通过交互LCP报文协商参数&#xff0c;包含了MRU、认证类型、魔术字等。 2、链路维护阶段&#xff1a; 3、链路终止 二、NCP网络控制协议&#xff1a;交互PPP IPCP报文,检测地址、学习路由、下发地址 1、通过IPCP协议的请求消…...

C++学习之云盘项目nginx

1.复习 2.知识点概述 1. 一些基本概念 1.1 Nginx 初步认识 1.2 正向 / 反向代理 1.3 域名和 IP 2. Nginx 安装和配置 2.1 安装 2.2 配置 3. Nginx 的使用 3.1 部署静态网页 3.2 反向代理和负载均衡 课外知识导读 1. URL 和 URI 2. DNS 解析过程 1. 一些基…...

7-字符串

1-ASCII 0-9 对应 48-57 A-Z 对应 65-90 a-z 对应 97-122 2-字符数组 字符变量存储单个字符 字符数组存储多个字符 字符串就是字符数组加上结束符 ’ \0 ’ #include <iostream> using namespace std; int main(){//是字符数组&#xff0c;不是字符串char a1[]{C,,};…...

vue学习八

十七 组件通信方式 1 props 父传子 //父组件 <script setup>//book来源省略import Subview1 from ./Subview1.vue;function updatebook(updatetimes){book.value.updatetimes updatetimes} </script> <template><Subview1 :book"book" :upd…...

Vue 渲染 LaTeX 公式 Markdown 库

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

基于大模型的喉癌全程预测与治疗方案优化研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与目标 1.3 研究方法与数据来源 二、大模型在喉癌预测中的应用原理 2.1 大模型概述 2.2 预测喉癌的技术原理 2.3 相关技术对比 三、术前预测与方案制定 3.1 术前风险预测 3.1.1 淋巴结转移预测 3.1.2 其他风险因素预…...

SpringBoot第三站:配置嵌入式服务器使用外置的Servlet容器

目录 1. 配置嵌入式服务器 1.1 如何定制和修改Servlet容器的相关配置 1.server.port8080 2. server.context-path/tx 3. server.tomcat.uri-encodingUTF-8 1.2 注册Servlet三大组件【Servlet&#xff0c;Filter&#xff0c;Listener】 1. servlet 2. filter 3. 监听器…...

通向AGI的未来之路!首篇2D/视频/3D/4D统一生成框架全景综述(港科大中山等)

文章链接&#xff1a; https://arxiv.org/pdf/2503.04641 摘要 理解并复现现实世界是人工通用智能&#xff08;AGI&#xff09;研究中的一个关键挑战。为实现这一目标&#xff0c;许多现有方法&#xff08;例如世界模型&#xff09;旨在捕捉支配物理世界的基本原理&#xff0…...

什么是MCP(Model Context Protocol)?对话、意图识别、服务调用和上下文管理

什么是MCP&#xff1f; MCP&#xff08;Model Context Protocol&#xff09; 是一种专为人工智能模型设计的通信协议&#xff0c;旨在解决复杂 AI 系统中多个模型或组件之间的协同、状态管理和资源优化问题。它尤其适用于大型语言模型&#xff08;LLM&#xff09;、多模态系统及…...

第二十七篇 数据仓库与维度建模指南:从理论到实战的进阶之路

声明&#xff1a;文章内容仅供参考&#xff0c;需仔细甄别。文中技术名称属相关方商标&#xff0c;仅作技术描述&#xff1b;代码示例为交流学习用途&#xff0c;部分参考开源文档&#xff08;Apache 2.0/GPLv3&#xff09;&#xff1b;案例数据已脱敏&#xff0c;技术推荐保持…...

定时任务引起的死锁

定时任务引起的死锁 前言&#xff1a;Java面试题 死锁的场景有哪些&#xff1f;你们是怎么解决的&#xff1f; 锁有哪些特性&#xff1f; 问题现象 1&#xff0c;文件上传报当前功能正在使用&#xff0c;请稍后再试 2&#xff0c;其他账号登录系统&#xff0c;登录不上去&a…...

NewStar CTF web wp

文章目录 week1headach3会赢吗智械危机谢谢皮蛋PangBai 过家家&#xff08;1&#xff09; week3include meblindsql1臭皮的计算机臭皮踩踩背这照片是你吗 week4Pangbai过家家四blindsql2chocolateezcmsssezpollute隐藏的密码 weeek5pangbai过家家(5)redissqlshell臭皮吹泡泡臭皮…...

Docker运行postgreSQL,由于异常启动或者退出后,提示could not locate a valid checkpoint record

pg_resetwal 是 PostgreSQL 的“急救工具”&#xff0c;用于在极端情况下修复因 WAL 或控制文件损坏导致的启动问题。 但需注意&#xff1a; 风险极高&#xff0c;可能导致数据不一致。必须立即转储并恢复&#xff0c;避免直接在修复后的数据库中执行写操作。仅在备份后使用&…...

Leetcode 刷题笔记1 图论part01

图论的基础知识&#xff1a; 图的种类&#xff1a; 有向图&#xff08;边有方向&#xff09; 、 无向图&#xff08;边无方向&#xff09;、加权有向图&#xff08;边有方向和权值&#xff09; 度&#xff1a; 无向图中几条边连接该节点&#xff0c;该节点就有几度&#xff1…...

文件管理系统

前言&#xff1a;之前我们讨论的是被打开文件的管理&#xff0c;那么未被打开的文件是如何管理的呢&#xff1f; 1.认识磁盘设备 1.1磁盘的物理结构 磁盘是由盘片&#xff08;盘面&#xff0c;扇区&#xff0c;磁道&#xff0c;柱面&#xff09;&#xff0c;磁头&#xff0c…...

荣耀手机卸载应用商店、快应用中心等系统自带的

1.下载abd ADB Download - Get the latest version of ADB and fastboot 2.手机打开开发者选项 3.手机接电脑打开USB调试 4.下载MT管理器查看系统包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 这边是…...

结合基于标签置信度的特征选择方法用于部分多标签学习-简介版

假设 部分多标签学习&#xff08;PML&#xff09;假设&#xff1a;假设样本的标签集合中存在伪正标签&#xff0c;即某些标签可能是错误的。目标是从候选标签集中识别出真实标签。特征与标签的关系假设&#xff1a;假设不同的标签对应的特征子空间可能是不同的&#xff0c;而不…...

【小白向】Word|Word怎么给公式标号、调整公式字体和花括号对齐

【小白向】Word&#xff5c;Word怎么给公式标号、调整公式字体和花括号对齐 我的版本&#xff1a;Word 2021 如需快速查看关键步骤&#xff0c;请直接阅读标红部分。 如果遇到无法调整的情况&#xff0c;可以直接下载我的示例文档进行参考&#xff1a;花括号和其他的示例公式.…...

基于香橙派 KunpengPro学习CANN(2)——Ascend Extension for PyTorch 配置与安装

将 PyTorch 网络迁移到昇腾平台并执行训练或推理&#xff0c;直接使用昇腾提供的构图接口构图。Ascend Extension for PyTorch插件用于适配PyTorch框架&#xff0c;可以使用昇腾AI处理器的算力。 1 pip 安装 # 下载PyTorch安装包 wget https://download.pytorch.org/whl/cpu/…...

【备赛】遇到的小问题-1

问题描述-1 想实现的功能是&#xff0c;通过ADC实时测量某引脚的电压及其占空比。 可以通过旋转电位器&#xff0c;更改其电压。 首先我定义了这几个变量 uint32_t adc_value;//HAL库函数里面得出的采样值(实时更新) uint32_t percentage6;//占空比&#xff0c;随着adc_val…...

Browser Use的安装和使用

文章目录 一、介绍二、安装教程1、使用Conda创建虚拟环境2、激活环境3、安装browser use4、安装Playwright5、克隆git仓库6、安装项目的依赖 三、使用教程1、启动WebUI2、案例13、案例2 一、介绍 背景 Browser Use&#xff1a;用AI控制你的浏览器&#xff0c;你可以使用它帮你…...

碰一碰发视频saas系统技术源头一站式开发文档

碰一碰发视频系统技术源头一站式开发文档 一、引言 在数字化信息传播高速发展的当下&#xff0c;如何让视频分享更便捷、高效&#xff0c;成为商家和开发者们关注的焦点。“碰一碰发视频”系统以其独特的交互方式和强大的功能优势&#xff0c;为视频分享领域带来了革命性变革。…...

Spring Boot 静态访问配置属性的解决方案

前言 在Spring Boot开发中&#xff0c;静态访问配置信息是一个常见需求&#xff0c;尤其是在工具类、常量类或非Bean类中直接获取配置值。 问题背景 假设我们的应用需要从application.yml中读取配置项app.logotype&#xff0c;并在工具类、静态方法或非Bean类中直接访问该值。…...

NLP高频面试题(四)——BN和LN的区别与联系,为什么attention要用LN

在深度学习模型中&#xff0c;Normalization是一种极为重要的技巧&#xff0c;Batch Normalization&#xff08;BN&#xff09;和Layer Normalization&#xff08;LN&#xff09;是其中最为常用的两种方法。然而&#xff0c;二者在实际应用中有着明显的区别与联系&#xff0c;尤…...

深度学习定义与分类【详细易懂 初学者友好~】

深度学习&#xff08;Deep Learning&#xff09;是机器学习的一个子领域&#xff0c;它基于人工神经网络&#xff08;Artificial Neural Networks&#xff0c;ANN&#xff09;的理论和架构&#xff0c;通过构建多层&#xff08;即“深度”&#xff09;的神经网络结构来学习数据…...

二、小白学JAVA-认识数据类型【变量】

1、实际案例类比 初中以上数学&#xff0c;就知道有有理数、正数、负数、0、小数、大写的数字、语文。 2、数据类型介绍 public class Main {public static void main(String[] args) {// 数据类型byte i_byte 12; // 标识数据范围小&#xff0c;但是节省内存>网络传输…...

UNI-APP uts插件 支持ANDROID 监听手机状态

插件地址 https://ext.dcloud.net.cn/plugin?id22646 模块 import {startPhoneListener,stopPhoneListener,checkIsAutoRecord,toCallAutoRecorderPage,navigateToCallRecordingSettings,jumpToPermissionPage,makePhoneCall,allRecorderFilesAction,registerSmsReceiver,} f…...

AI入门7:python三种API方式调用本地Ollama+DeepSeek

回顾 书接上篇&#xff1a;各种方式搭建了本地知识库&#xff1a; AI入门&#xff1a;AI模型管家婆ollama的安装和使用-CSDN博客 AI入门2&#xff1a;本地AI部署&#xff0c;用ollama部署deepseek&#xff08;私有化部署&#xff09;-CSDN博客 AI入门3&#xff1a;给本地d…...

SQL SERVER日常运维巡检系列—结构设计

前言   做好日常巡检是数据库管理和维护的重要步骤&#xff0c;而且需要对每次巡检日期、结果进行登记&#xff0c;同时可能需要出一份巡检报告。   本系列旨在解决一些常见的困扰&#xff1a; 不知道巡检哪些东西 不知道怎么样便捷体检 机器太多体检麻烦 生成报告…...

前端剪贴板操作:从传统方法到现代方案

一、传统复制实现原理 这个copy函数展示了经典的剪贴板操作方案&#xff1a; function copy(color) {const input document.createElement("input");input.value color;document.body.appendChild(input);input.select();document.execCommand("copy")…...

E1-数组的平衡点2(前缀和)

题目描述 给定一个长度为 n 的数组 nums&#xff0c;若其中存在某个位置 index&#xff0c;使得 [0, index - 1] 范围的元素之积 等于 [index 1, n - 1] 范围的元素之积&#xff0c;则称 index 位置是数组 nums 的平衡点。 请你找出数组 nums 的平衡点位置&#xff0c;若存在…...

【Maven-plugin】有多少官方插件?

之前疏理了容器底层原理&#xff0c;现在回归主题,在阅读 next-public时发现 parent 将从多基础插件集成到 parent 仓库中单独维护&#xff0c;数量众多&#xff0c;故在此将所有插件分类整理。以达观其全貌&#xff0c;心中有数。 以下是 Apache Maven 官方维护的核心插件列表…...

10-BST(二叉树)-建立二叉搜索树,并进行前中后遍历

题目 来源 3540. 二叉搜索树 - AcWing题库 思路 建立二叉搜索树&#xff08;注意传参时用到了引用&#xff0c;可以直接对root进行修改&#xff09;&#xff0c;同时进行递归遍历&#xff1b;遍历可以分前中后三种写&#xff0c;也可以用标志来代替合在一起。其余详见代码。…...

企业培训APP如何迈向AI时代?智能化在线教育系统源码开发解析

2025年&#xff0c;AI驱动的企业培训系统将成为主流&#xff0c;企业可以借助智能化在线教育系统源码构建高效的培训体系&#xff0c;提高员工学习效率&#xff0c;优化培训成本。本文将详细解析AI如何赋能企业培训&#xff0c;并探讨智能化在线教育系统源码的关键技术与开发实…...

CXSMILES介绍

Chemaxon 扩展 SMILES/SMARTS 用于在 SMILES 字符串后存储分子的特殊特征。任何信息都可以存储在 SMILES 字符串后,只要它们由空格或制表符字符分隔,因为 SMILES 解析器会忽略这些信息,或者将它们作为注释使用。扩展特征以以下格式存储: SMILES_String |<feature1>,…...

麒麟服务器操作系统Sqlite部署手册

软件简介 SQLite****介绍 SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。…...

【GPT-SoVITS】GPT-SoVITSAPI调用:让二次元角色开口说话,打造专属语音合成系统

介绍 GPT-SoVITS 是一个强大的语音合成系统&#xff0c;它结合了 GPT&#xff08;生成式预训练转换器&#xff09;和 SoVITS&#xff08;Soft-VC VITS&#xff09;两种先进技术&#xff1a; GPT: 负责文本理解和语音生成的控制&#xff0c;能够根据上下文生成自然的语音内容S…...

Deepseek API+Python测试用例一键生成与导出-V1.0.2【实现需求文档图片识别与用例生成自动化】

在测试工作中&#xff0c;需求文档中的图片&#xff08;如界面设计图、流程图&#xff09;往往是测试用例生成的重要参考。然而&#xff0c;手动提取图片并识别内容不仅耗时&#xff0c;还容易出错。本文将通过一个自研小工具&#xff0c;结合 PaddleOCR 和大模型&#xff0c;自…...

防火墙双机热备(主备分担)

目录 引言 主备备份实验 1、基本配置 2、双机热备配置 查看双机热备状态 主备切换 路由影响 引言 传统VRRP方式无法实现主、备用防火墙状态信息和多组VRRP状态的一致性&#xff0c;所以可能会导致流量的回包不从首包通过的防火墙回包&#xff0c;防火墙会因为状态检测机…...

记Redis集群挂掉后,尝试重启集群但失败问题

前期尝试解决&#xff1a;将redis集群中所有redis节点都关闭后&#xff0c;又重新启动服务并且试图用命令建立集群通讯&#xff0c;报错[ERR] Node 192.168.75.128:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some…...

c++--vector

1.定义vector vector的定义分为四种 (1)vector() ——————无参构造 (2)vector(size_t n,const value_type& val value_type()) ——————构造并初始化n个val (3)vector(const vector& v1) ———————拷贝构造 (4)vector(inputiterator first,inpu…...

计算机视觉——深入理解卷积神经网络与使用卷积神经网络创建图像分类算法

引言 卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;简称 CNNs&#xff09;是一种深度学习架构&#xff0c;专门用于处理具有网格结构的数据&#xff0c;如图像、视频等。它们在计算机视觉领域取得了巨大成功&#xff0c;成为图像分类、目标检测、图像分…...

c++题目_翻译家

题目描述 grang是一个帅气的翻译家他的任务是把摩斯密码翻译成2进制数&#xff0c;他要上课所以想请你帮他一下&#xff0c;他会给你 一段摩斯密码有“.”和“-”组成让你输出个二进制数。 翻译规则是&#xff1a;不用管-&#xff0c;看每一个.有几个"."组成如果有奇…...

【解析 ECharts 图表样式继承与自定义】

解析 ECharts 图表样式继承与自定义 本文将详细介绍 ECharts 的样式继承机制&#xff0c;从其原理、演进到实际应用场景&#xff0c;并结合实际开发经验分享一些实战技巧&#xff0c;帮助开发者在构建数据可视化页面时实现更统一、灵活的样式管理与高效开发。 一、背景与来龙…...

Python IP解析器 ip2region使用

说明&#xff1a;最近需要在python项目内使用IP定位所在城市的需求&#xff0c;没有采用向外部ISP服务商API请求获取信息的方案&#xff0c;则翻了翻&#xff0c;在搞Java时很多的方案&#xff0c;在Python端反而可选择范围很小。 # 示例查询 ips ["106.38.188.214"…...

Java Stream 流的介绍

介绍 在 Java 8 中&#xff0c;引入了 Stream API&#xff0c;它为处理集合&#xff08;如 List、Set 等&#xff09;提供了一种更简洁、声明式的方式。Stream 流的设计目标是支持对数据集合的高效操作&#xff0c;尤其是能够进行链式操作、并行处理等&#xff0c;极大地提升了…...

C++从入门到入土(八)——多态的原理

目录 前言 多态的原理 动态绑定与静态绑定 虚函数表 小结 前言 在前面的文章中&#xff0c;我们介绍了C三大特性之一的多态&#xff0c;我们主要介绍了多态的构成条件&#xff0c;但是对于多态的原理我们探讨的是不够深入的&#xff0c;下面这这一篇文章&#xff0c;我们将…...

BFS,DFS带图详解+蓝桥杯算法题+经典例题

1.BFS和DFS的定义与实现方式 1.1 深度优先搜索&#xff08;DFS&#xff09; 基本概念&#xff1a;DFS 是一种用于遍历或搜索图或树的算法。它从起始节点开始&#xff0c;沿着一条路径尽可能深地探索下去&#xff0c;直到无法继续或者达到目标节点&#xff0c;然后回溯到上一个…...