[C++开发 03_2/2 _ STL(185)]

news2024/12/28 5:44:45

知识点1:STL初始

 概述:

        STL是标准模板库的意思,STL从广义上来讲分为:容器,算法,迭代器。

容器算法之间通过迭代器进行无缝连接。

知识点2:STL初始

 2.1 STL诞生

 C++中面向对象的三大特性:封装、继承、多态。

封装:把一些属性和行为,类似的东西抽象出来作为一个整体,来实现一些事和物。

继承:子类继承父类,把父类中的一些属性和行为继承过来,拿过来一份,不用再重新声明一遍了,这样也提高了代码的复用。

多态:同一个函数名称有多种实现,同一个函数名有多种不同的形态,也提高了代码的复用性。

C++中泛型编程:模板

模板:将我们的类型参数化之后,我们可以把它更通用性。

大多数情况下:数据结构和算法都没有一套标准,导致被迫从事大量的重复性工作。比如实现一个加法运算,你写的加法和我写的加法,本质是一样的,但是函数名和函数的参数可能就不一样了。但是功能完全一样,就是实现两个数相加,这样就导致了重复的工作。为了建立一套标准,我们就诞生了STL,这套标准之后,就更进一步的提高了我们代码的复用性。系统给我们提供了一套加法,以后你也不写加法函数,我也不用写加法函数,我们都使用系统提供的这套加法。这样就减轻了我们代码的重复工作。

2.2 STL基本概念

2.3 STL六大组件

 1、容器:各种数据结构,如vector,list,deque,set,map等,用来存放数据。

  2、算法

2.4 STL中容器、算法、迭代器

2.5 容器、算法、迭代器初始

2.5.1 vector存放内置数据类型

要点:使用容器数据类型时需要包含头文件,迭代器是属于标准库中的类或函数,使用时需要带上域的解析。std::vector<int> v;

第三种遍历方式:使用编译器提供的算法遍历。需要包含头文件,需要写一个回调函数。

v.end()指向最后一个元素的下一位置:

当v.begin()==v.end()时,退出循环。

2.5.2 vector存放内置数据类型

总结:

vector<Person>中<>内是什么数据类型,*it解出来的值就是什么数据类型。

示例:

for(vector<Person*>::iterator it=v.begin();it!=v.end();it++)
{
        cout<<"姓名 "<<(*it)->m_name<<"年龄"<<(*it).m_age<<endl;
}

因为<>中放的是Person*,所以*it解出来的是Person*,所以我们访问的时候,需要使用->,而不能点出来
 

2.5.3 vector容器中嵌套容器

学习目标:容器中嵌套容器,我们将所有数据进行遍历输出

假设容器是一个一维数组,那么容器嵌套容器,就相当于是一个二维数组。

知识点3: STL常用容器

3.1 string基本概念

 3.1.1  string基本概念

 总结:

        char*是一个指针。

        string的本质就是一个类,其内部维护了一个char*,是一个char*的容器。

3.1.2   string构造函数

 构造字符串的方式:

 总结:

        string的多种构造函数方式没有可比性,灵活使用即可。

3.1.3   string赋值操作

功能描述:

        给string字符串进行赋值。

 

总结:

        string的赋值方法很多,operator=这种方式比较使用的。

3.1.4   string字符串拼接

 

3.1.5    string查找和替换

如果父串中有子串,那么会返回,父串中子串的第一个元素所在父串中位置,从0开始算起。如果没有找到字串返回-1。

3.1.6   string字符串比较
3.1.7   string字符串存取
3.1.8   string插入和删除
3.1.9   string字串

3.2 vector容器

3.2.1 vector基本概念

随机访问的意思就是可以跳跃式的访问,可以一下跳好几个来访问。

3.2.2 vector构造函数

注意:vector(v.begin(),v.end)

3.2.3 vector赋值操作

3.2.4 vector容器和大小

3.2.5 vector 插入和删除

3.2.6 vector 数据存取

3.2.7 vector互换容器

3.2.8 vector预留空间

3.3 deque容器

3.4案例_评委打分

3.5 stack容器

3.7 list容器

3.8 set/multiset容器

3.9 map/ multimap容器

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

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

相关文章

九、Kotlin 注解

1. 什么是注解 注解是对程序的附件信息说明。 注解可以作用在类、函数、函数参数、属性等上面。 注解的信息可用于源码级、编译期、运行时。 2. 注解类的定义 使用元注解 Retention 声明注解类的作用时期。 使用元注解 Target 声明注解类的作用对象。 定义注解类时可以声…

8.6 代理设计模式

文章目录 一、代理模式&#xff08;Proxy Pattern&#xff09;概述二、代理模式和观察者设计模式三、模式结构四、协作角色五、实现策略六、相关模式七、示例八、应用 一、代理模式&#xff08;Proxy Pattern&#xff09;概述 代理模式是一种设计模式&#xff0c;它通过引入一个…

Windows Defender存在威胁执行操作无反应且一直存在红叉(已解决)

文章目录 前言问题如图一、原因二、解决办法&#xff08;亲试有效&#xff09;总结 前言 Windows安全中心&#xff08;Windows Defender&#xff09;执行快速扫描/完全扫描后一直存在威胁&#xff0c;执行隔离或者删除操作后下次扫描还会扫出该威胁&#xff0c;但看威胁文件位置…

38、Flink 的CDC 格式:canal部署以及示例

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

leetcode1237. 找出给定方程的正整数解

1237. 找出给定方程的正整数解https://leetcode.cn/problems/find-positive-integer-solution-for-a-given-equation/ 难度中等 101 给你一个函数 f(x, y) 和一个目标结果 z&#xff0c;函数公式未知&#xff0c;请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。满…

java生成验证码工具类,java生成图片验证码

java生成验证码工具类&#xff0c;java生成图片验证码 java生成验证码工具类&#xff0c;java生成图片验证码&#xff0c;java生成彩色图片验证码&#xff0c;带干扰线验证码。 调用结果&#xff1a; 工具类调用&#xff1a; GetMapping("/validateCode")public vo…

ubuntu设置右键打开terminator、code

前言&#xff1a; 这里介绍一种直接右键打开本地目录下的terminator和vscode的方法。 一&#xff1a;右键打开terminator 1.安装terminator sudo apt install terminator 2.安装nautilus-actions filemanager-actions sudo apt-get install nautilus-actions filemanager…

【大数据】Flink 中的事件时间处理

Flink 中的事件时间处理 1.时间戳2.水位线3.水位线传播和事件时间4.时间戳分配和水位线生成 在之前的博客中&#xff0c;我们强调了时间语义对于流处理应用的重要性并解释了 处理时间 和 事件时间 的差异。虽然处理时间是基于处理机器的本地时间&#xff0c;相对容易理解&#…

可视化智慧水电站EasyCVR视频智能监控系统方案设计与技术应用介绍

一、背景需求 水电站作为国家重要的能源基地&#xff0c;其安全运行对于保障能源供应和社会稳定具有重要意义。然而&#xff0c;传统的人工监控方式存在着诸多问题&#xff0c;如人力成本高、监控范围有限、反应不及时等。因此&#xff0c;水电站急需引进一种先进的视频智能监…

《Q年文峰》GPT应用的交互式非线性体验

Phoncent博客创始人庄泽峰把自己的小说《Q年文峰》做成GPT应用&#xff0c;显然这是一件值得探索且具有创新意义的事情。 因为传统的阅读体验是线性的&#xff0c;读者只能按照固定的情节顺序进行阅读&#xff0c;而把小说制作成GPT应用后&#xff0c;读者阅读小说的方式是非线…

安卓程序开发——搭建主页框架

一、实验目的 搭建项目框架掌握Android Activity组件使用和Intent机制&#xff0c;加强对Activity生命周期的理解&#xff0c;掌握Fragment的使用。 二、实验设备及器件 Android Studio 三、实验内容 1.创建一个Android应用&#xff0c;设置工程名MobileShop&#xff0c;包…

鸿蒙ArkUI开发-应用添加弹窗

在我们日常使用应用的时候&#xff0c;可能会进行一些敏感的操作&#xff0c;比如删除联系人&#xff0c;这时候我们给应用添加弹窗来提示用户是否需要执行该操作&#xff0c;如下图所示&#xff1a; 弹窗是一种模态窗口&#xff0c;通常用来展示用户当前需要的或用户必须关注的…

智能体AI Agent的极速入门:从ReAct到AutoGPT、QwenAgent、XAgent

前言 如这两天在微博上所说&#xff0c;除了已经在七月官网上线的AIGC模特生成系统外&#xff0c;我正在并行带多个项目组 第二项目组&#xff0c;论文审稿GPT第2版的效果已经超过了GPT4&#xff0c;详见《七月论文审稿GPT第2版&#xff1a;用一万多条paper-review数据集微调…

PBM模型学习(二)Discrete离散方法

1.Discreate离散方法主要涉及Bins的分区、粒径设置、颗粒粒径、Phenomena,如下图所示: ## 2.重要参数设置 Bins分区 Bins表示将颗粒分成了几份 也就是说在PBM模型中,颗粒粒径是离散的,比如实际的颗粒粒径可能是0.001m-0.01m范围内,那么颗粒在这个范围内粒径应该是比较连续…

幻兽帕鲁游戏服务器搭建by阿里云服务器4核16G和32G配置价格表

如何自建幻兽帕鲁服务器&#xff1f;基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了&#xff0c;一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器&#xff0c;阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

C++初阶--list

list C的list是标准模板库中的一个容器&#xff0c;用于存储和管理元素的双向链表。提供了一系列访问和修改数据的函数&#xff1b; 使用时需要包含头文件 #include< list > 下面演示下它的一些基础功能 使用list list的遍历 int main() {list<int> lt;lt.push_…

机器学习实验4——CNN卷积神经网络分类Minst数据集

文章目录 &#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1; 原理&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;CNN实现分类Minst&#x1f9e1;&#x1f9e1;代码数据预处理&#xff1a;设置基本参数&#xff1a; &#x1f9e…

JVM实战(34)——内存溢出之消息队列处理不当

一、简介 本章&#xff0c;我们将介绍一个因为处理消息队列中的数据不当而引起的内存溢出问题&#xff0c;先来看下系统的背景。 1.1 系统背景 这是一个线上的数据同步系统&#xff0c;专门从Kafka消费其它系统送进去的数据&#xff0c;处理后存储到自己的数据库中&#xff1…

算法------(10)堆

例题&#xff1a;&#xff08;1&#xff09;AcWing 838. 堆排序 我们可以利用一个一维数组来模拟堆。由于堆本质上是一个完全二叉树&#xff0c;他的每个父节点的权值都小于左右子节点&#xff0c;而每个父节点编号为n时&#xff0c;左节点编号为2*n&#xff0c;右节点编号为2*…

智慧应急消防柜的作用

在现代社会&#xff0c;科技的不断进步带来了许多便利与改变。智能化的产品不仅给我们的生活带来了便捷&#xff0c;也让我们对各个领域的发展有了更高的期待。而在这种场景下&#xff0c;智慧应急消防柜作为智慧城市新型基础设施的必备品&#xff0c;正逐渐受到更多关注。 智能…