数学系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,一经查实,立即删除!

相关文章

Node.js Stream

Node.js Stream Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它允许开发者使用 JavaScript 编写服务器端代码。Node.js 的一个核心特性是其对流&#xff08;Stream&#xff09;的处理能力。流是一种在 Node.js 中处理读/写文件、网络通信或任何端到端…

【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…

MySQL性能优化 二、表结构设计优化

1.设计中间表 设计中间表&#xff0c;一般针对于统计分析功能&#xff0c;或者实时性不高的需求。 2.设计冗余字段 为减少关联查询&#xff0c;创建合理的冗余字段&#xff08;创建冗余字段还需要注意数据一致性问题&#xff09; 3.折表 对于字段太多的大表&#xff0c;考…

C++ STL容器:序列式容器-链list,forward_list

摘要&#xff1a; CC STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;在C编程中的重要性不容忽视&#xff0c;STL提供了一系列容器、迭代器、算法和函数对象&#xff0c;这些组件极大地提高了C程序的开发效率和代码质量。 STL 容器 分为 2 大类 …

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;、英语、韩语、日语、俄语、…

10、广告-用户数据中心

用户数据中心 用户数据中心在程序化广告中扮演着至关重要的角色&#xff0c;它主要包括DMP原理、用户画像逻辑、Look Alike原理和DMP对接DSP四个部分。下面&#xff0c;我们将详细讲解每个部分的内容。 &#xff08;一&#xff09;DMP原理 数据管理平台&#xff08;Data Man…

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): 根…

Postman中数据文件的高效使用:测试自动化与数据驱动测试实践

摘要 Postman 是一个强大的 API 开发工具&#xff0c;它不仅支持 API 的设计、开发和测试&#xff0c;还提供了数据驱动测试的功能。通过使用数据文件&#xff0c;我们可以模拟不同的测试场景&#xff0c;实现测试的自动化和重复执行。本文将详细介绍如何在 Postman 中使用数据…

PHP-实例-CSRF

1 需求 按照用途分类&#xff1a; 会话&#xff08;会话ID和会话令牌 二选一&#xff09; 会话ID&#xff1a;服务器侧自动生成&#xff0c;自动存储在cookie中&#xff0c;需要在服务器侧存储会话令牌&#xff1a;服务器侧手动生成&#xff0c;手动存储在cookie中&#xff0…

7月07日,每日信息差

第一、6 月份&#xff0c;北京、上海、广州和深圳的新建商品住宅成交量分别环比增加 21%、66%、48% 和 38%&#xff0c;均创年内新高 第二、2024 年世界人工智能大会上&#xff0c;上海向四家企业发放了首批无驾驶人智能网联汽车示范应用许可&#xff0c;这些企业可以在浦东部…