数学系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讲

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

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

相关文章

【LeetCode】螺旋矩阵

目录 一、题目二、解法完整代码 一、题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&…

go-redis 封装事件-client封装模型、批量数据处理的导出器设计

一、redis-go的封装实践-client模型 // Copyright 2020 Lingfei Kong <colin404foxmail.com>. All rights reserved. // Use of this source code is governed by a MIT style // license that can be found in the LICENSE file.package storageimport ("context&q…

Halcon 铣刀刀口破损缺陷检测

一 OTSU OTSU&#xff0c;是一种自适应阈值确定的方法,又叫大津法&#xff0c;简称OTSU&#xff0c;是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像分为前景和背景两个部分。当取最佳阈值时&#xff0c;两部分之间的差别应该是最大的&#xff0c;在OTSU算法中所采…

排序 -- 万能测试oj

. - 力扣&#xff08;LeetCode&#xff09; 这道题我们可以使用我们学过的那些常见的排序方法来进行解答 //插入排序 void InsertSort(int* nums, int n) {for (int i 0; i < n-1; i){int end i;int tmp nums[end 1];while (end > 0){if (tmp < nums[end]){nums[…

PyVideoTrans:一款功能全面的视频翻译配音工具!【送源码】

PyVideoTrans是一款功能全面的视频翻译配音工具&#xff0c;专为视频内容创作者设计。它能够将视频中的语言翻译成另一种语言&#xff0c;并自动生成与之匹配的字幕和配音。支持多种语言&#xff0c;包括但不限于中文&#xff08;简繁体&#xff09;、英语、韩语、日语、俄语、…

Wormhole Filters: Caching Your Hash on Persistent Memory——泛读笔记

EuroSys 2024 Paper 论文阅读笔记整理 问题 近似成员关系查询&#xff08;AMQ&#xff09;数据结构可以高效地近似确定元素是否在集合中&#xff0c;例如Bloom滤波器[10]、cuckoo滤波器[23]、quotient滤波器[8]及其变体。但AMQ数据结构的内存消耗随着数据规模的增长而快速增长…

MSPM0G3507——串口0从数据线传输变为IO口传输

默认的跳线帽时这样的&#xff0c;这样时是数据线传输 需要改成这样&#xff0c;即可用IO口进行数据传输

windows系统本地端口被占用的问题

第一步&#xff1a;查找所有运行的端口 按住“WindowsR”组合键&#xff0c;打开命令窗口&#xff0c;输入【cmd】命令&#xff0c;回车。在弹出的窗口中输入 命令【netstat -ano】&#xff0c;再按一下回车键 Win系统端口被占用-查找所有运行的端口 第二步&#xff1a;查看…

opencv_C++学习笔记(入门30讲)

文章目录 1.配置开发环境2.图像读取与显示3.图像色彩空间转换4.图像对象的创建与赋值5.图像像素的读写操作6.图像像素的算数操作7.滚动条-调整图像亮度8.滚动条-调整对比度和亮度9.键盘响应操作10.图像像素的逻辑操作11.图像的通道分离和合并12.图像色彩空间转换13.图像的像素值…

阿里云存储的降本增效与运维

小浩负责公司存储架构层&#xff0c;需要确保存储层不会成为公司业务系统的性能瓶颈&#xff0c;让数据读写达到最佳性能。那么小浩可以从哪些方面着手优化性能呢&#xff1f;他继续求助系统架构师大雷。 小浩&#xff1a;雷哥&#xff0c;PD反馈公司系统最近响应很慢&#xff…

HTTP模块(一)

HTTP服务 本小节主要讲解HTTP服务如何创建服务&#xff0c;查看HTTP请求&响应报文&#xff0c;还有注意事项说明&#xff0c;另外讲解本地环境&Node环境&浏览器之间的链路图示&#xff0c;如何提取HTTP报文字符串&#xff0c;及报错信息查询。 创建HTTP服务端 c…

lspci

【原】Linux之PCIE三种空间解析 PCIe学习笔记——2.PCIe配置空间 PCIE学习&#xff08;2&#xff09;PCIE配置空间详解 开发者分享 | 使用 lspci 和 setpci 调试 PCIe 问题 b : 字节 w&#xff1a;word L&#xff1a; 4byte

LLM - 词表示和语言模型

一. 词的相似度表示 (1): 用一系列与该词相关的词来表示 (2): 把每个词表示一个独立的符号(one hot) (3): 利用该词上下文的词来表示该词 (3): 建立一个低维度的向量空间&#xff0c;用深度学习方法将该词映射到这个空间里(Word Embedding) 二&#xff1a;语言模型 (1): 根…

Redis源码整体结构

一 前言 Redis源码研究为什么先介绍整体结构呢?其实也很简单,作为程序员的,要想对一个项目有快速的认知,对项目整体目录结构有一个清晰认识,有助于我们更好的了解这个系统。 二 目录结构 Redis源码download到本地之后,对应结构如下: 从上面的截图可以看出,Redis源码一…

52-5 内网代理2 - LCX端口转发(不推荐使用LCX)

环境搭建: 本地开3台虚拟机:kali(必须)、windows2012与2008 (可换成其他windows虚拟机) kali - 网络配置成桥接模式 windows2012 - 设置两个网卡,NAT与桥接模式 注意:windows2012要关闭防火墙,要不然其他主机ping不通 关闭防火墙后再开启远程桌面连接 windwos20…

去O化神器 Exbase

随着去O化进程推动&#xff0c;很多旧业务依赖的oracle数据库&#xff0c;都需要实现做数据库的替换&#xff0c;当下能很好兼容Oracle&#xff0c;并实现异构数据库之间转换的工具并不多。这里给大家推荐一个商业工具数据库迁移工具exbase&#xff08;北京海量&#xff09;&am…

昇思MindSpore 25天学习打卡营|day18

DCGAN生成漫画头像 在下面的教程中&#xff0c;我们将通过示例代码说明DCGAN网络如何设置网络、优化器、如何计算损失函数以及如何初始化模型权重。在本教程中&#xff0c;使用的动漫头像数据集共有70,171张动漫头像图片&#xff0c;图片大小均为96*96。 GAN基础原理 这部分原…

想知道你的电脑能不能和如何升级RAM吗?这里有你想要的一些提示

考虑给你的电脑增加更多的RAM,但不确定从哪里开始?本指南涵盖了有关升级Windows PC或笔记本电脑中RAM的所有信息。 你需要升级RAM吗 在深入研究升级RAM的过程之前,评估是否需要升级是至关重要的。你是否经历过系统滞后、频繁的BSOD错误或应用程序和程序突然崩溃?这些症状…

从零开始的python学习生活

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

【网站推荐】Developer Roadmaps 开发者学习路线

你是否想学习某门技术而苦苦找不到学习路线。本文推荐一个网站&#xff0c;解决学习路径问题。 roadmap.sh 旨在创建路线图、指南和其他教育内容&#xff0c;以帮助指导开发人员选择路径并指导他们的学习。 技术路线包括了前端后端安卓iosUI设计等内容&#xff0c;一些技术比如…