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

news2024/12/26 10:25:13

目录

目录

面向对象: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讲

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1905813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git杂记

git 安装&#xff1a; 在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win&#xff0c;下载会自动开始。 要注意这是一个名为 Git for Windows 的项目&#xff08;也叫做 msysGit&#xff09;&#xff0c;和…

如何优化 PostgreSQL 中对于树形结构数据的查询?

文章目录 一、数据模型选择&#xff08;一&#xff09;邻接表模型&#xff08;二&#xff09;路径枚举模型&#xff08;三&#xff09;嵌套集模型 二、索引策略&#xff08;一&#xff09;对于邻接表模型&#xff08;二&#xff09;对于路径枚举模型&#xff08;三&#xff09;…

基于pi控制的数字锁相环simulink建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…

ARM架构以及程序运行解析

文章目录 1. ARM架构 2. ARM处理器程序运行的过程 3. 示例 3. 基于ARM架构的STM32单片机 1. 运行模式 2. 寄存器组 3. STM32的基本结构 4. STM32的运行模式 4. 寄存器组详解 1. 未备份寄存器 2. 备份寄存器 3. 程序计数器 4. 程序状态寄存器 5. CPSR和SPSR寄存器…

【TB作品】51单片机 Proteus仿真 00001仿真实物PID电机调速系统

实验报告&#xff1a;Proteus 仿真 PID 电机调速系统 一、实验背景 PID&#xff08;比例-积分-微分&#xff09;控制器广泛应用于工业控制系统中&#xff0c;用于调节各种物理变量。本实验的目的是通过 Proteus 仿真软件设计并实现一个 PID 电机调速系统&#xff0c;以控制直…

记一次酣畅淋漓的UDF提权(Linux)

外网打点就不放了&#xff0c;翻了一下具备suid权限的命令&#xff0c;没啥结果。 可疑的命令是/usr/lib/dbus-1.0/dbus-daemon-launch-helper但是没有找到用这个命令提权的资料。 弹shell后翻找一下源码&#xff0c;/app/api.py文件中链接了mysql&#xff0c;事出反常必有妖&…

水冷液冷负载系统的六种基本类型

您可以选择六种基本类型的冷却系统&#xff0c;以满足负载的冷却需求。每个人都有其优点和缺点。本文旨在识别不同类型的冷却系统并确定它们的优缺点&#xff0c;以便您可以根据自己的需求做出明智的选择。 液体冷却系统有六种基本类型&#xff1a; 1.液对液 2.闭环干燥系统…

【论文阅读】AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising

论文&#xff1a;2406.06911 (arxiv.org) 代码&#xff1a;czg1225/AsyncDiff: Official implementation of "AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising" (github.com) 简介 异步去噪并行化扩散模型。提出了一种新的扩散模型分布式加…

J024_打印电影的全部信息

一、需求描述 展示多部电影的信息。 电影信息包括&#xff1a;电影名称、电影得分、电影票价格。 二、代码实现 2.1 Movie类 package com.itheima.collection;public class Movie {//电影名称private String name;//电影得分private int score;//电影票价格private double…

前端面试题(CSS篇五)

一、设备像素、css 像素、设备独立像素、dpr、ppi 之间的区别&#xff1f; 设备像素指的是物理像素&#xff0c;一般手机的分辨率指的就是设备像素&#xff0c;一个设备的设备像素是不可变的。 css像素和设备独立像素是等价的&#xff0c;不管在何种分辨率的设备上&#xff0c;…

LLaMA2模型开源商用:实力比肩ChatGPT,探索AI新高度

【大模型】可商用且更强的 LLaMA2 来了 LLaMA2 简介 论文 GitHubhuggingface模型列表训练数据训练信息模型信息 许可证参考 LLaMA2 简介 2023年7月19日&#xff1a;Meta 发布开源可商用模型 Llama 2。 Llama 2是一个预训练和微调的生成文本模型的集合&#xff0c;其规模从…

java中反射(Reflection)的4个作用

java中反射&#xff08;Reflection&#xff09;的4个作用 作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断任意一个类所具有的成员变量和方法作用4、在运行时调用任意一个对象的方法总结 &#x1f496;The Begin&#x1f496;…

shared_ptr 线程安全

为什么 shared_ptr 可以安全地在多个线程中共享&#xff1f; 循环引用 因为shared_ptr std::shared_ptr 的引用计数是线程安全的。这意味着你可以在多个线程中安全地拷贝、赋值和销毁 std::shared_ptr。然而&#xff0c;访问或修改 shared_ptr 所指向的对象时&#xff0c;需要…

SpringBoot彩蛋之定制启动画面

写在前面 在日常开发中&#xff0c;我们经常会看到各种各样的启动画面。例如以下几种 ① spring项目启动画面 ② mybatisplus启动画面 ③若依项目启动画面 还有很多各式各样好看的启动画面&#xff0c;那么怎么定制这些启动画面呢&#xff1f; 一、小试牛刀 ① 新建一个Spr…

聊聊数据库变更管控的白屏化

在前文中介绍了当涉及到数据库相关的变更如数据更新或者误删表等误操作时&#xff0c;通过延迟库或者闪回等功能来恢复业务&#xff0c;这些已经属于事后的故障处理了。当故障发生后&#xff0c;所要面临的是故障影响的不可控&#xff0c;所面临的损失也是不可预估的。就像最近…

【Excel】求和带文字的数据

目录标题 1. 给出样例2. CtrlE3. CtrlH → A替换为 → 全部替换 1. 给出样例 2. CtrlE 3. CtrlH → A替换为 → 全部替换

从零开始的python学习生活

pycharm部分好用快捷键 变量名的定义 与之前学习过的语言有所不同的是&#xff0c;python中变量名的定义更加的简洁 such as 整形。浮点型和字符串的定义 money50 haha13.14 gaga"hello"字符串的定义依然是需要加上引号&#xff0c;也不需要写&#xff1b;了 字符…

重温express

前言 很久之前囫囵吞枣的学过一点node&#xff0c;最近决定用nodevue写个博客项目&#xff0c;所以重新学习了express的相关内容。 初始搭建 创建项目 npm init给项目命名创建项目终端进入项目&#xff0c;安装express依赖&#xff0c;npm i expressjs文件中引入express使用…

「C++系列」C++ 常量知识点-细致讲解

文章目录 一、C 常量定义1. 使用#define预处理指令2. 使用const关键字3. 局部常量4. 全局常量5. 指针常量6. 枚举&#xff08;Enumerations&#xff09;7. constexpr&#xff08;C11及以后&#xff09; 二、C 整数常量1. 十进制整数常量2. 八进制整数常量3. 十六进制整数常量4.…

RAG理论:ES混合搜索BM25+kNN(cosine)以及归一化

接前一篇:RAG实践:ES混合搜索BM25+kNN(cosine) https://blog.csdn.net/Xin_101/article/details/140230948 本文主要讲解混合搜索相关理论以及计算推导过程, 包括BM25、kNN以及ES中使用混合搜索分数计算过程。 详细讲解: (1)ES中如何通过BM25计算关键词搜索分数; (2)…