C++ Primer 自定义数据结构
专栏简介:本专栏主要面向C++初学者,解释C++的一些基本概念和基础语言特性,涉及C++标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级程序设计技术。希望对读者有帮助!
目录
- 自定义数据结构
- 定义Sales_data类型
- 类数据成员
- 使用Sales_data类
- 添加两个Sales_data对象
- Sales_data对象读入数据
- 编写自己的头文件
- 预处理器概述
自定义数据结构
从最基本的层面理解,数据结构是把一组相关的数据元素组织起来然后使用它们的策略和方法。举一个例子,我们的Sales_item类把书本的TSBN编号、售出量及销售收入等数据组织在了一起,并且提供诸如isbn函数、>>、<<、+、+=等运算在内的一系列操作,Sales_item类就是一个数据结构。
C++语言允许用户以类的形式自定义数据类型,而库类型string、istream、ostream等也都是以类的形式定义的,就像Sales_item类型一样。C++语言对类的支持甚多,事实上本书的第III部分和第IV部分都将大篇幅地介绍与类有关的知识。尽管Sales_item类非常简单,但是要想给出它的完整定义可在第14章介绍自定义运算符之后。
定义Sales_data类型
尽管我们还写不出完整的Sales_item类,但是可以尝试着把那些数据元素组织到一起形成一个简单点儿的类。初步的想法是用户能直接访问其中的数据元素,也能实现一些基本的操作。
既然我们筹划的这个数据结构不带有任何运算功能,不妨把它命名为Sales_data以示与Sales_item的区别。Sales_data初步定义如下:
struct Sales_data{std::strtng bookNo;unsigned units_sold = 0;double revenue = 0.0;
}
我们的类以关键字struct开始,紧跟着类名和类体(其中类体部分可以为空)。类体由花括号包围形成了一个新的作用域。类内部定义的名字必须唯一,但是可以与类外部定义的名字重复。类体右侧的表示结束的花括号后必须写一个分号,这是因为类体后面可以紧跟变量名以示对该类型对象的定义,所以分号必不可少:
struct Sales_data{/*…*/}accum,trans,*salesptr;
//与上一条语句等价,但可能更好一些
struct Sales_data{}
Sales_data acoum , trans , *salesptr;
分号表示声明符的结束。一般来说,最好不要把对象的定义和类的定义放在一起。这么做无异于把两种不同实体的定义混在了一条语句里,一会儿定义类,一会儿又定义变量,显然这是一种不被建议的行为。
WARNING: 很多新手程序员经常忘了在类定义的最后加上分号。
类数据成员
类体定义类的成员,我们的类只有数据成员(data member)。类的数据成员定义了类的对象的具体内容,每个对象有自己的一价数据成员拷贝。修改一个对象的数据成员,不会影响其他Sales_data的对象。
定义数据成员的方法和定义普通变量一样:首先说明一个基本类型,随后紧跟一个或多个声明符。我们的类有3个数据成员:一个名为 bookNo 的 string 成员、一个名为 units_sold 的unsigned 成员和一个名为 revenue 的 double 成员。又个Sales_data的对象都将包括这3个数据成员。
C++11新标准规定,可以为数据成员提供一个类内初始值(in-class initializer)。创建对象时,类内初始值将用于初始化数据成员。没有初始值的成员将被默认初始化。因此当定义Sales_data的对象时,units_sold和revenue都将初始化为0,bookNo将初始化为空字符串。
对类内初始值的限制与之前介绍的类似:或者放在花括号里,或者放在等号右边,记住不能使用圆括号。
使用Sales_data类
和Sales_item类不同的是,我们自定义的Sales_data类没有提供任何操作,Sales_data类的使用者如果想执行什么操作就必须自己动手实现。。程序的输入是下面这两条交易记录:
0-201-78345-X320.00
0-201-78345-X225.00
每笔交易记录着图书的ISBN编号、售出数量和售出单价。
添加两个Sales_data对象
因为sales_data类没有提供任何操作,所以我们必须自己编码实现输入、输出和相加的功能。假设已知Sales_data类定义于sales_data.h文件内,将详细介绍定义头文件的方法。
因为程序比较长,所以接下来分成儿部分介绍。总的来说,程序的结构如下:
#nclude<iostreami>
#include<string>
#include“Sales_data.h“
ntmain()
{Sales_data data1,data2;//读入data1 和 data2的代码//datal和data2的ISBN是否相同的代码//如果相同,求data1和data2的总和
}
和原来的程序一样,先把所需的头文件包含进来并且定义变量用于接受输入。和Sales_item类不同的是,新程序还包含了string头文件,因为我们的代码中将用到string类型的成员变量bookkNo。
Sales_data对象读入数据
第3章和第10章将详细介绍string类型的细节,在此之前,我们先了解一点儿关于string的知识以便定义和使用我们的ISBN成员string类型其实就是字符的序列,它的操作有>>、<<和==等,功能分别是读入字符串、写出字符串和比较字符串。这样我们就能书写代码读入第一笔交易了:
double price=0;//书的单价,用于计算销售收入//读入第1笔交易:ISBN、销售数量、单价std::cin >> data1.bookNo >> datal.units_sold >> price;//计算销售收入datal.revenue = datal.units_sold * price;
交易信息记录的是书售出的单价,而数据结构存储的是一次交易的销售收入,因此需要将单价读入到double变量price,然后再计算销售收入revenue。输入语句
std::cin >> data1.bookNo >> data1.units_sold >> price;
使用点操作符读入对象 data1 的bookNo成员和unitssold成员。最后一条语句把datal.units_sold和price的乘积赋值给data1的revenue成员。接下来程序重复上述过程读入对象data2的数据:
//读入第2笔交易std::cin>>data2.bookNo>>data2.units_sold>>price;data2.revenue=data2.units_sold * price;
输出两个Sales_data对象的和
剩下的工作就是检查两笔交易涉及的ISBN编号是否相同了.如果相同输出它们的和,否则输出一条报错信息:
if(datal.bookNo == _data2.bookNo) {unsigned totalCnt =datal.units_sold+data2.units_sold;double totalRevenue=datalrevenue+data2.revenue;//输出:ISBN、总销售量、总销售额、平均价格std::cout<<datal.bookNo<<““<<totalCnt <<““<<totalRevenue<<““if(totalCnt!=0) {std::cout<<totalRevenue/totalCnt<<std::endl;}elsestd::cout<<“(nosales)“<<std::endl;return 0;//标示成功
} else {//两笔交易的ISBN不一样 std::cerr<<“Data must refer to the same ISBN“ << std::endl;return -1;//标示失败
}
在第一个if语句中比较了daata1和data2的bookNo成员是否相同。如果相同则执行第一个if语句花括号内的操作,首先计算units_sold的和并赋给变量totalCnt,然后计算revenue的和并赋给变量totalRevenue,输出这些值。接下来检查是否确实售出了书籍,如果是,计算并输出每本书的平均价格;如果售量为零,输出一条相应的信息。
眼下先把Sales_data类的定义和 main 函数放在同一个文件里。
编写自己的头文件
类一般都不定义在函数体内。当在函数体外部定义类时,在各个指定的源文件中可能只有一处该类的定义。而且,如果要在不同文件中使用同一个类,类的定义就必须保持一致。
为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字应与类的名字一样。例如,库类型string在名为string的头文件中定义。又如,我们应该把Sales_data类定义在名为sales_data.h的头文件中。
头文件通常包含那些只能被定义一次的实体,如类、const和constexpr变量等。头文件也经常用到其他头文件的功能.例如,我们的Sales_data类包含有一个string成员,所以Sales_data.h必须包含string.h头文件。同时,使用Sales_data类的程序为了能操作bookkNo成员需要再一次包含string.h头文件。
这样,事实上使用Sales_data类的程序就先后两次包含了string.h头文件:一次是直接包含的,另有一次是随着包含Sales_data.h被隐式地包含进来的。有必要在书写头文件时做适当处理,使其遇到多次包含的情况也能安全和正常地工作。
头文件一旦改变,相关的源文件必须重新编译以获取更新过的声明。
预处理器概述
确保头文件多次包含仍能安全工作的常用技术是预处理器(preprocessor),它由C++语言从C语言继承而来。预处理器是在编译之前执行的一段程序,可以部分地改变我们所写的程序。之前已经用到了一项预处理功能include,当预处理器看到#include标记时就会用指定的头文件的内容代替#include。
C++程序还会用到的一项预处理功能是头文件保护符(header guard),头文件保护符依赖于预处理变量。预处理变量有两种状态:已定义和未定义。#define 指令把一个名字设定为预处理变量,另外两个指令则分别检查某个指定的预处理变量是否已经定义: #ifdef 当且仅当变量已定义时为真,#ifndef当且仅当变量未定义时为真。一旦检查结果为真,则执行后续操作直至遇到#endif指令为止。
使用这些功能就能有效地防止重复包含的发生:
#ifndef SRLES_DATA_H
#define SRLES_DATA_H
#include<string>
struct Sales_data{std::string bookNo;unsigned units_sold=0;double revenue=0.0;
}
第一次包含Sales_data.h 时,#ifndef的检查结果为真,预处理器将顺序执行后面的操作直至遇到#endif为止。此时,预处理变量SALES_DATA_H的值将变为已定义,而且sales_data.h也会被拷贝到我们的程序中来.后面如果再一次包含sales_data.h,则 #ifndef的检查结果将为假,编译器将忽略#ifndef到#endif之间的部分。
WARNING: 预处理变量无视C++语言中关于作用域的规则。
整个程序中的预处理变量包括头文件保护符必须唯一,通常的做法是基于头文件中类的名字来构建保护符的名字,以确保其唯一性。为了避免与程序中的其他实体发生名字冲突,一般把预处理变量的名字全部大写。
相关文章:
C++ Primer 自定义数据结构
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
Kanass快速安装配置教程(入门级)
Kanass是一款国产开源免费的项目管理工具,工具简洁易用、开源免费,本文将介绍如何快速安装配置kanass,以快速上手。 1、快速安装 1.1 Linux 安装 点击官网 -> 演示与下载 ->下载,下载Linux安装包,…...
【自然语言处理(NLP)】基于Transformer架构的预训练语言模型:BERT 训练之数据集处理、训练代码实现
文章目录 介绍BERT 训练之数据集处理BERT 原理及模型代码实现数据集处理导包加载数据生成下一句预测任务的数据从段落中获取nsp数据生成遮蔽语言模型任务的数据从token中获取mlm数据将文本转换为预训练数据集创建Dataset加载WikiText-2数据集 BERT 训练代码实现导包加载数据构建…...
深度解析:网站快速收录与网站安全性的关系
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/58.html 网站快速收录与网站安全性之间存在着密切的关系。以下是对这一关系的深度解析: 一、网站安全性对收录的影响 搜索引擎惩罚: 如果一个网站存在安全隐患&am…...
《基于Scapy的综合性网络扫描与通信工具集解析》
在网络管理和安全评估中,网络扫描和通信是两个至关重要的环节。Python 的 Scapy 库因其强大的网络数据包处理能力,成为开发和实现这些功能的理想工具。本文将介绍一个基于 Scapy 编写的 Python 脚本,该脚本集成了 ARP 扫描、端口扫描以及 TCP…...
MySQL索引详解
MySQL索引详解 什么是索引索引的原理索引的分类索引的数据结构二叉树平衡二叉树B树B树 聚集索引与非聚集索引概念利用聚集索引查找数据利用非聚集索引查找数据覆盖索引与回表操作 如何正确使用索引 什么是索引 索引是存储引擎中一种数据结构,或者说数据的组织方式&…...
【NEXT】网络编程——上传文件(不限于jpg/png/pdf/txt/doc等),或请求参数值是file类型时,调用在线服务接口
最近在使用华为AI平台ModelArts训练自己的图像识别模型,并部署了在线服务接口。供给客户端(如:鸿蒙APP/元服务)调用。 import核心能力: import { http } from kit.NetworkKit; import { fileIo } from kit.CoreFileK…...
【Qt】界面优化
界面优化 设置全局样式样式文件使⽤ Qt Designer 编辑样式选择器设置子控件样式伪类选择器样式属性盒模型设置按钮样式设置复选框样式输入框样式列表样式菜单栏样式 在 Qt 中对界面的优化和 CSS 类似。语法结构如下: 选择器 {属性名: 属性值; }例如: QP…...
机器学习算法在网络安全中的实践
机器学习算法在网络安全中的实践 本文将深入探讨机器学习算法在网络安全领域的应用实践,包括基本概念、常见算法及其应用案例,从而帮助程序员更好地理解和应用这一领域的技术。"> 序言 网络安全一直是信息技术领域的重要议题,随着互联…...
课题介绍:基于惯性与单目视觉信息融合的室内微小型飞行器智能自主导航研究
室内微小型飞行器在国防、物流和监测等领域中应用广泛,但在复杂的非合作环境中实时避障和导航仍面临诸多挑战。由于微小型飞行器的载荷和能源限制,迫切需要开发高效的智能自主导航系统。本项目旨在研究基于惯性导航与单目视觉信息融合的技术,…...
Observability:实现 OpenTelemetry 原生可观察性的商业价值
作者:来自 Elastic David Hope 利用开放标准和简化的数据收集转变组织的可观察性策略。 现代组织面临着前所未有的可观察性挑战。随着系统变得越来越复杂和分散,传统的监控方法难以跟上步伐。由于数据量每两年翻一番,系统跨越多个云和技术&am…...
nginx 报错404
404:服务器无法正常解析页面,大多是配置问题(路径配置错误)、或访问页面不存在 如果你也是用nginx来转接服务的话,那你有可能碰到过这种情况,当你启动服务后,在本地打开页面,发现404,然后你找遍…...
2.2.1 人眼色觉与色度图
文章目录 人眼色觉色度图 人眼色觉 视网膜上的视杆细胞、视锥细胞在人眼色觉中起到重要作用。视杆细胞主要用在弱光暗环境下,其数量远远多于视锥细胞。视锥细胞负责明亮环境的视觉,有L,M,S三种类型的细胞,分别对长、中、短波长敏感࿰…...
DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”
当算力博弈升级为网络战争:拆解DDoS攻击背后的技术攻防战——从DeepSeek遇袭看全球网络安全新趋势 在数字化浪潮席卷全球的当下,网络已然成为人类社会运转的关键基础设施,深刻融入经济、生活、政务等各个领域。从金融交易的实时清算…...
c语言(关键字)
前言: 感谢b站鹏哥c语言 内容: 栈区(存放局部变量) 堆区 静态区(存放静态变量) rigister关键字 寄存器,cpu优先从寄存器里边读取数据 #include <stdio.h>//typedef,类型…...
眼见着折叠手机面临崩溃,三星计划增强抗摔能力挽救它
据悉折叠手机开创者三星披露了一份专利,通过在折叠手机屏幕上增加一个抗冲击和遮光层的方式来增强折叠手机的抗摔能力,希望通过这种方式进一步增强折叠手机的可靠性和耐用性,来促进折叠手机的发展。 据悉三星和研发可折叠玻璃的企业的做法是在…...
Excel to form ?一键导入微软表单
一句话痛点 “你的Excel越强大,手动复制到Forms就越痛苦。” 合并单元格崩溃成乱码、下拉菜单变纯文本、条件逻辑消失无踪——这些不是技术问题,而是低效工作模式的死刑判决书。 直击解决方案:3分钟,3步,300%效率 1…...
使用Ollama本地化部署DeepSeek
1、Ollama 简介 Ollama 是一个开源的本地化大模型部署工具,旨在简化大型语言模型(LLM)的安装、运行和管理。它支持多种模型架构,并提供与 OpenAI 兼容的 API 接口,适合开发者和企业快速搭建私有化 AI 服务。 Ollama …...
【xdoj-离散线上练习】T251(C++)
解题反思: 开始敲代码前想清楚整个思路比什么都重要嘤嘤嘤!看到输入m, n和矩阵,注意不能想当然地认为就是高m,宽n的矩阵,细看含义 比如本题给出了树的邻接矩阵,就是n*n的,代码实现中没有用到m这…...
【数据结构】_链表经典算法OJ(力扣/牛客第二弹)
目录 1. 题目1:返回倒数第k个节点 1.1 题目链接及描述 1.2 解题思路 1.3 程序 2. 题目2:链表的回文结构 2.1 题目链接及描述 2.2 解题思路 2.3 程序 1. 题目1:返回倒数第k个节点 1.1 题目链接及描述 题目链接: 面试题 …...
线性代数复习笔记
1. 课程学习 1.1 3Blue1Brown 线性代数 2. 基本术语 eigenvector(特征向量):线性变换中方向保持不变的向量 可以视作3D旋转矩阵形成的旋转的轴...
51单片机 01 LED
一、点亮一个LED 在STC-ISP中单片机型号选择 STC89C52RC/LE52RC;如果没有找到hex文件(在objects文件夹下),在keil中options for target-output- 勾选 create hex file。 如果要修改编程 :重新编译-下载/编程-单片机重…...
用一个例子详细说明python单例模式
单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这在需要控制资源(如数据库连接、文件系统等)的访问时非常有用。 下面是一个使用Python实现单例模式的例子: class Singleton:…...
QT知识点复习
1.qt核心机制 对象树、信号和槽、事件机制 2.对象树的作用 优化了内存回收机制。子对象实例化的时候,被父对象放对象树上,父对象释放内存,子对象也释放内存 3.信号和槽的作用 实现多个组件之间的通讯 4.信号和槽的几种连接方式 1.UI界面提…...
医学图像分割任务的测试代码
测试集进行测试 import os import torch import numpy as np from torch.utils.data import DataLoader from sklearn.metrics import (precision_score,recall_score,f1_score,roc_curve,auc,confusion_matrix, ) import matplotlib.pyplot as plt from utils import NiiData…...
linux下ollama更换模型路径
Linux下更换Ollama模型下载路径指南 在使用Ollama进行AI模型管理时,有时需要根据实际需求更改模型文件的存储路径。本文将详细介绍如何在Linux系统中更改Ollama模型的下载路径。 一、关闭Ollama服务 在更改模型路径之前,需要先停止Ollama服务。…...
手机上运行AI大模型(Deepseek等)
最近deepseek的大火,让大家掀起新一波的本地部署运行大模型的热潮,特别是deepseek有蒸馏的小参数量版本,电脑上就相当方便了,直接ollamaopen-webui这种类似的组合就可以轻松地实现,只要硬件,如显存…...
第一性原理:游戏开发成本的思考
利润 营收-成本 营收定价x销量x分成比例 销量 曝光量x 点击率x (购买率- 退款率) 分成比例 100%- 平台抽成- 税- 引擎费- 发行抽成 成本开发成本运营成本 开发成本 人工外包办公地点租金水电设备折旧 人工成本设计成本开发成本迭代修改成本后续内容…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.11 视图与副本:内存优化的双刃剑
2.11 视图与副本:内存优化的双刃剑 目录 #mermaid-svg-OpelXRXip4Xj1A2e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OpelXRXip4Xj1A2e .error-icon{fill:#552222;}#mermaid-svg-OpelXRXip4Xj1A2e .…...
React 封装高阶组件 做路由权限控制
React 高阶组件是什么 官方解释∶ 高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分,它是一种基于 React 的组合特性而形成的设计模式。 高阶组件(HOC)就是一个函数&…...
Python sider-ai-api库 — 访问Claude、llama、ChatGPT、gemini、o1等大模型API
目前国内少有调用ChatGPT、Claude、Gemini等国外大模型API的库。 Python库sider_ai_api 提供了一个完整的解决方案。通过调用 sider.ai 的API,开发者可以实现对这些大模型的访问。 众所周知,sider是一个Chrome,以及Edge的浏览器插件…...
深入解析 Linux 内核内存管理核心:mm/memory.c
在 Linux 内核的众多组件中,内存管理模块是系统性能和稳定性的关键。mm/memory.c 文件作为内存管理的核心实现,承载着页面故障处理、页面表管理、内存区域映射与取消映射等重要功能。本文将深入探讨 mm/memory.c 的设计思想、关键机制以及其在内核中的作用,帮助读者更好地理…...
git基础使用--3---git安装和基本使用
git基础使用–3–git-安装和基本使用 1. git工具安装 使用git如果不考虑开发工具我们一般需要关注三个点 1.1 git 本地化仓库管理的基础 打开https://git-scm.com/downloads地址下载安装 安装完成后,配置环境变量 配置完打开cmd,输入git --versio…...
Python 网络爬虫实战:从基础到高级爬取技术
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 网络爬虫(Web Scraping)是一种自动化技术,利用程序从网页中提取数据,广泛…...
【PyQt】学习PyQt进行GUI开发从基础到进阶逐步掌握详细路线图和关键知识点
学习PyQt的必要性 PyQt是开发跨平台GUI应用的强大工具,适合需要构建复杂、高性能界面的开发者。无论是职业发展还是项目需求,学习PyQt都具有重要意义。 1. 跨平台GUI开发 跨平台支持:PyQt基于Qt框架,支持Windows、macOS、Linux…...
Web - CSS3基础语法与盒模型
概述 这篇文章是关于 Web 前端 CSS3 的基础语法与盒模型的讲解。包括 CSS3 层叠性及处理冲突规则、伪元素和新增伪类元素、属性选择器等。还介绍了文本与字体属性,如段落和行相关属性、字体文本属性。最后阐述了盒子模型,如元素隐藏、行内与块元素转换、…...
【开源免费】基于Vue和SpringBoot的公寓报修管理系统(附论文)
本文项目编号 T 186 ,文末自助获取源码 \color{red}{T186,文末自助获取源码} T186,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
成绩案例demo
本案例较为简单,用到的知识有 v-model、v-if、v-else、指令修饰符.prevent .number .trim等、computed计算属性、toFixed方法、reduce数组方法。 涉及的功能需求有:渲染、添加、删除、修改、统计总分,求平均分等。 需求效果如下:…...
【tiktok 国际版抖抖♬♬ __ac_signature算法】逆向分析
一开始的参数是没有X-Bogus和 __ac_signature的 先是加密请求参数得到乱码。最终得到X-Bogus 然后请求参数添加了X-Bogus之后再去生成__ac_signature __ac_signature的生成需要用到X-Bogus...
【Linux】动静态库
一、库 静态库 .a[Linux]、.lib[windows] 动态库 .so[Linux]、.dll[windows] 二、静态库使用 如果我们要做一个静态库的话,首先我们需要把我们源文件(.c/.cpp)隐藏起来,头文件(.h)必须暴露出来, 1.我们先要把我们所有的.c文件编译成.o文件…...
《手札·开源篇》从开源到商业化:中小企业的低成本数字化转型路径 ——以Odoo为数据中台低成本实现售前售中一体化
某机电设备有限公司数字化转型案例:以Odoo为数据中台实现售前售中一体化 一、企业背景某机电设备有限公司在机电设备领域历经多年发展,业务广泛,涵盖工业自动化设备、电力设备等产品的销售与服务。随着业务版图不断拓展,企业面临…...
携程Android开发面试题及参考答案
在项目中,给别人发的动态点赞功能是如何实现的? 数据库设计:首先要在数据库中为动态表添加一个点赞字段,用于记录点赞数量,同时可能需要一个点赞关系表,记录用户与动态之间的点赞关联,包括点赞时间等信息。界面交互:在 Android 界面上,为点赞按钮设置点击事件监听器。…...
Python-列表
3.1 列表是什么 在Python中,列表是一种非常重要的数据结构,用于存储一系列有序的元素。列表中的每个元素都有一个索引,索引从0开始。列表可以包含任何类型的元素,包括其他列表。 # 创建一个列表my_list [1, 2, 3, four, 5.0]…...
【LeetCode 刷题】回溯算法-子集问题
此博客为《代码随想录》二叉树章节的学习笔记,主要内容为回溯算法子集问题相关的题目解析。 文章目录 78.子集90.子集II 78.子集 题目链接 class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:res, path [], []def dfs(start: int) ->…...
31.Word:科技论文的译文审交稿【31】
目录 NO1.2.3 NO4.5.6 NO7.8样式应用和修改&多级列表 NO9奇偶页页眉 NO10自动编号&交叉引用 NO11.12 NO1.2.3 另存为/F12:考生文件夹只保留译文内容、格式设置、修订批注,删除其他:删除表格的左列→删除第一行将表格转化成…...
Java序列化详解
1 什么是序列化、反序列化 在Java编程实践中,当我们需要持久化Java对象,比如把Java对象保存到文件里,或是在网络中传输Java对象时,序列化机制就发挥着关键作用。 序列化:指的是把数据结构或对象转变为可存储、可传输的…...
尝试ai生成figma设计
当听到用ai 自动生成figma设计时,不免好奇这个是如何实现的。在查阅了不少资料后,有了一些想法。参考了:在figma上使用脚本自动生成色谱 这篇文章提供的主要思路是:可以通过脚本的方式构建figma设计。如果我们使用ai 生成figma脚本…...
每日一题——包含min函数的栈
包含min函数的栈 题目数据范围:示例C语言代码实现解释1. push(value)2. pop()3. top()4. min() 总结大小堆GPT给的原始代码 题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 mi…...
【最后203篇系列】004 -Smarklink
说明 这个用来替代nginx。 最初是希望用nginx进行故障检测和负载均衡,花了很多时间,大致的结论是:nginx可以实现,但是是在商业版里。非得要找替代肯定可以搞出来,但是太麻烦了(即使是nginx本身的配置也很烦…...
二分法模板
数组具有二段性,可以分为左右两边合法区和不合法区 如果选择左端点,右边区域不合法,选择 left mid ,right mid - 1; 如果选择右端点,左边区域不合法,选择 left mid 1 ,right mid ; 1.x 的平方根 LCR 072. x 的…...