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

数学系C++ 类与对象 STL(九)

目录

目录

面向对象:py,c艹,Java都是,但c是面向过程

特征:

对象

内敛成员函数【是啥】:

构造函数和析构函数

构造函数

复制构造函数/拷贝构造函数:

【……】 实参与形参的传递方式:值传递,引用传递,地址传递【带扩充】

匿名对象

析构函数

STL

 顺序容器/序列容器(Sequential Containers)

关联容器(Associative Containers)按排序方式存储数据,就像词典一样  方便搜索

容器适配器(Associative adapters)(栈,队,优先队列)

对容器的算法

容器的成员函数



面向对象:py,c艹,Java都是,但c是面向过程

特征:

抽象、封装、继承、多态

继承机制:

允许程序员在保持原有类特性的基础上,进行更具体、更详细的说明。

多态:

同一段程序能处理多种类型对象。在 C++ 中,多态有强制多态(如类型转换)、重载多态(如函数重载、运算符重载)、类型参数化和虚函数、模板等。

对象

成员函数既可以访问目的对象的私有成员,也可以访问所在类的其它对象的私有成员。

内敛成员函数【是啥】:

使用内联函数可以减少调用开销,提高效率,但只适合相当简单的函数。

构造函数和析构函数

构造函数:负责对象初始化。

析构函数:在对象被释放时自动调用的函数。

构造函数与析构函数是两类特殊的成员函数,每个类都有。

构造函数

class Clock{public:Clock(int x, int y, int z); // 构造函数
void SetTime(int h=0, int m=0, int s=0);void ShowTime();private:int hour, minute, second;};
// 构造函数的定义
Clock::Clock(int x, int y, int z){ hour=x; minute=y; second=z; }

注意:构造函数前不能加数据类型或 void!

复制构造函数/拷贝构造函数:

一类特殊的构造函数,将已有对象的指复制给其它对象

例:自定义复制构造函数:

Point::Point(Point & p) // 复制构造函数的定义
{x=p.x; y=p.y;cout << "自定义复制构造函数被调用!" << endl;}.

默认的复制构造函数何时调用?用=赋值时

int main()
{Point A(1,2);
Point B(A); // 用 A 初始化 B,自定义复制构造函数被调用
Point C=A; // 与上面语句完全一样
Point D;
D=A; // 赋值,默认复制构造函数被调用!
cout << B.getx() << endl;return 0;}

 对象可以作为成员函数和非成员函数的参数

【……】 实参与形参的传递方式:值传递,引用传递,地址传递【带扩充】
匿名对象

非匿名对象构造函数缺省的话不要小括号

Clock c2; // OK,全部使用缺省值时不要加小括号!
Clock c2(); // ERROR

 匿名对象要

析构函数

► 析构函数的函数名由类名前加“~”组成

► 析构函数没有返回值

► 析构函数在对象生存期即将结束时被自动调用

► 析构函数不接收任何参数

► 若没有自定义析构函数,系统会自动生成一个缺省析构函数(函数体为空,如:~Point() { } )

————————————————————以上为第九讲

STL

 顺序容器/序列容器(Sequential Containers)

array 数组,长度不能改变

vector 只能在最后面插入或删除数据

deque 与 vector 类似,但允许在最前面插入或删除数据

list 双向链表,可在任意位置插入或删除数据f

orward_list 与 list 类似,但是单向的,只能沿一个方向访问

string 字符串,与 vector 类似,但存储的是字符

关联容器(Associative Containers)按排序方式存储数据,就像词典一样  方便搜索

set 存储互不相同的数据,插入数据时进行排列

unordered_set 与 set 类似,但按 Hash 值排序

map 存储“键-值”对,按唯一的键排序

unordered_map 与 map 类似,但按“键”的 Hash 值排序

muti:

multiset 与 set 类似,但允许有相同的数据

unordered_multiset 与 unordered_set 类似,但允许有相同的数据

multimap 与 map 类似,但不要求“键”唯一

unordered_multimap 与 unordered_map 类似,但不要求“键”唯一

容器适配器(Associative adapters)(栈,队,优先队列)

顺序适配器和关联适配器的变种,增加一些特殊功能

stack 栈,按后进先出(LIFO)方式存储数据

queue 队列,按先进先出(FIFO)方式存储数据

priority_queue 队列,但能保证最大元素总在最前

对容器的算法

find 查找指定的值

find_if 根据条件查找

reverse 反转

remove_if 根据条件删除相应的数据

transform 根据用户给定的方法对数据进行交换

容器的成员函数

begin() 返回开始迭代器end() 返回结束迭代器

size() 返回实际元素个数

capacity() 返回当前容量

empty() 判断是否为空

max_size() 返回元素个数的最大值

front() 返回第一个元素的引用

back() 返回最后一个元素的引用

push_back() 在序列的尾部添加一个元素

pop_back() 移出序列尾部的元素

clear() 移出所有的元素,容器大小变为 0

resize() 改变实际元素的个数

at() 使用索引访问元素,会进行边界检查

assign() 用新元素替换原有内容

insert() 在指定的位置插入一个或多个元素

erase() 移出一个元素或一段元素

swap() 交换两个容器的所有元素

data() 返回包含元素的内部数组的指针【?】

sort() 对元素进行排序

这里仅列出部分成员函数。† 并非所有容器都具有这些成员函数。† 容器不仅使用方便,而且效率也非常高,可代替数组。† 优先使用 vector 和 string

————————————————————————以上为第16讲

相关文章:

数学系C++ 类与对象 STL(九)

目录 目录 面向对象&#xff1a;py&#xff0c;c艹&#xff0c;Java都是,但c是面向过程 特征&#xff1a; 对象 内敛成员函数【是啥】&#xff1a; 构造函数和析构函数 构造函数 复制构造函数/拷贝构造函数&#xff1a; 【……】 实参与形参的传递方式&#xff1a;值…...

CSS技巧专栏:一日一例 2.纯CSS实现 多彩边框按钮特效

大家好,今天是 CSS技巧一日一例 专栏的第二篇《纯CSS实现多彩边框按钮特效》 先看图: 开工前的准备工作 正如昨日所讲,为了案例的表现,也处于书写的习惯,在今天的案例开工前,先把昨天的准备工作重做一遍。 清除浏览器的默认样式定义页面基本颜色设定body的样式清除butt…...

JCEF 在idea 开发 java 应用

JCEF&#xff08;Java Chromium Embedded Framework&#xff09;是一个Java库&#xff0c;用于在Java应用程序中嵌入Chromium浏览器引擎。如果您想在IDEA开发环境中使用JCEF&#xff0c;您可以按照以下步骤进行操作&#xff1a; 1. 下载JCEF库文件&#xff1a;您可以从JCEF的官…...

绝区伍--2024年AI发展路线图

2024 年将是人工智能具有里程碑意义的一年。随着新模式、融资轮次和进步以惊人的速度出现&#xff0c;很难跟上人工智能世界发生的一切。让我们深入了解 2024 年可能定义人工智能的关键事件、产品发布、研究突破和趋势。 2024 年第一季度 2024 年第一季度将推出一些主要车型并…...

C++:.front()函数作用

在C中&#xff0c;.front() 函数是容器&#xff08;如 std::vector、std::deque、std::list 的某些实现等&#xff09;的成员函数&#xff0c;用于访问容器中的第一个元素。这个函数返回对容器中第一个元素的引用&#xff08;对于非const容器&#xff09;或const引用&#xff0…...

Linux系统备份工具TimeShift

Linux系统备份 Linux系统备份工具TimeShift Linux系统备份工具TimeShift 0. 前言1. 安装2. 启动3. 使用法一、图形界面操作&#xff08;方便&#xff09;法二、终端命令操作&#xff08;高端&#xff09; Linux系统备份工具TimeShift Linux系统备份工具TimeShift 0. 前言 Time…...

Google重大更新--解读Android Auto认证4.3

Google在今年五月更新了Android Auto 4.2.2版本&#xff0c;而在2024年7月他们推出了Android Auto 4.3版本&#xff0c;这是自2023年9月以来对Android Auto 4.2版本的一次重大更新。 为了确保合规性和顺利认证&#xff0c;OEM和Tire1必须确保PDK组件版本与正在认证的主机的Rece…...

scala基础

scala基础&#xff1a; hello world: 写scala可运行文件的注意事项1、如果一个scala文件要运行&#xff0c;class要改成object2、如果是class&#xff0c;就仅单纯代表一个类&#xff0c;如果是object代表的是单例对象3、scala语法中&#xff0c;一句话结束不需要加分号4、scal…...

小红书选品中心商家采集 小红书商家电话采集软件

可采集名称销量评分联系方式等 需要有1000粉丝以上已实名认证过的小红书达人才可以使用 以下是一个示例程序&#xff0c;可以用于批量获取小红书选品中心商家的信息&#xff1a; import requestsdef get_merchants(page_num):url f"https://www.xiaohongshu.com/selec…...

JavaScript基础: JavaScript 数字类型

JavaScript 中的数字类型是用来表示数值的数据类型。JavaScript 的数字类型是基于 IEEE 754 标准的双精度浮点数格式&#xff0c;这意味着它可以表示非常大和非常小的数值&#xff0c;以及小数。 数字字面量 在 JavaScript 中&#xff0c;数字可以直接以字面量的形式书写&…...

【网络安全】漏洞挖掘之Spring Cloud注入漏洞

漏洞描述 Spring框架为现代基于java的企业应用程序(在任何类型的部署平台上)提供了一个全面的编程和配置模型。 Spring Cloud 中的 serveless框架 Spring Cloud Function 中的 RoutingFunction 类的 apply 方法将请求头中的“spring.cloud.function.routing-expression”参数…...

面试官:MySQL死锁是什么,如何解决?

MySQL死锁概述 定义&#xff1a;多个操作相互等待对方释放资源&#xff0c;导致无法继续执行的情况。场景&#xff1a;通常发生在多个事务同时试图锁定对方已锁定的资源时。 MySQL锁的分类 粒度分类&#xff1a; 表级锁&#xff1a;锁定整个表&#xff0c;简单但并发能力低。…...

CSS原子化

目录 一、定义 二、原子化工具 2.1、tailwind 2.1.1、以PostCss插件形式安装 2.1.2、不依赖PostCss安装 2.1.3、修改原始配置 2.2、unocss 三、优缺点 3.1、优点 3.2、缺点 一、定义 定义&#xff1a;使用一系列的助记词&#xff0c;利用类名来代表样式。 二、原子化…...

【Python的pip配置、程序运行、生成exe文件】

Python的pip配置、程序运行、生成exe文件 一、安装Python 通过官网下载对应的版本&#xff0c;安装即可。 下载地址&#xff1a;https://www.python.org/downloads/ Python标准库查看&#xff08;Python自带库&#xff09; Python 标准库文档 安装Python的时候&#xff0c…...

神经网络习题

不具有权重共享的网络是&#xff1a; **多层感知机&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;&#xff1a; ** 特点&#xff1a;每一层的每一个神经元都与上一层的每一个神经元全连接&#xff0c;权重独立于每个连接&#xff0c;不存在权重共享。 权重共享…...

deepstream段错误

&#x1f610; 错误&#xff1a; 探针中由于使用了pyds.get_nvds_buf_surface(hash(gst_buffer), frame_meta.batch_id)导致的段错误&#xff08;segmentation fault&#xff09;。 解决方式&#xff1a;...

《梦醒蝶飞:释放Excel函数与公式的力量》10.1.1函数简介

10.1.1函数简介 BIN2DEC函数是Excel中用于将二进制数转换为十进制数的函数。它在处理二进制数时非常有用&#xff0c;尤其是在电子工程、计算机科学等领域。 10.1.2函数语法&#xff1a; BIN2DEC(number) number&#xff1a;这是要转换的二进制数&#xff0c;必须是以字符串…...

Bert 变种, T5模型

NLP-预训练模型-2019-NLU&#xff1a;DistilBERT【 BERT模型压缩】【模型大小减小了40%&#xff08;66M&#xff09;&#xff0c;推断速度提升了60%&#xff0c;但性能只降低了约3%】_distillbert-CSDN博客 https://zhuanlan.zhihu.com/p/673535548 大语言模型系列-T5_t5模型…...

技术赋能政务服务:VR导视与AI客服在政务大厅的创新应用

在数字化转型的浪潮中&#xff0c;政务大厅作为服务民众的前沿阵地&#xff0c;其服务效率和质量直接影响着政府形象和民众满意度。然而&#xff0c;许多政务大厅仍面临着缺乏智能化导航系统的挑战&#xff0c;这不仅增加了群众的办事难度&#xff0c;也降低了服务效率。维小帮…...

大模型备案全网最详细流程【附附件】

本文要点&#xff1a;大模型备案最详细说明&#xff0c;大模型备案条件有哪些&#xff0c;《算法安全自评估报告》模板&#xff0c;大模型算法备案&#xff0c;大模型上线备案&#xff0c;生成式人工智能(大语言模型)安全评估要点&#xff0c;网信办大模型备案。 大模型备案安…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...