C++STL基础
STL基础
- 诞生
- cpp的面向对象和泛型编程的思想本质就是提高复用性
- 诞生了STL库
- 基本概念
- STL标准模板库
- STL从广义上分为容器、算法及迭代器
- 容器和算法之间通过迭代器进行连接
- STL几乎所有的代码都采用了模板类或者模板函数
- 基本组件
- 容器、算法、迭代器、仿函数、适配器、空间配置器
- 容器
- 各类数据结构
- 算法
- 各类常用算法
- 迭代器
- 容器和算法的胶合剂
- 仿函数
- 行为类似函数,可作为算法的某种策略
- 适配器
- 一种用来修饰容器或者迭代器接口的东西
- 空间配置器
- 负责空间的配置与管理
- STL中容器、算法、迭代器
- 容器就是运用最广泛的一些数据结构实现出来
- 分类
- 序列式容器
- 强调值的排序,序列式容器中的每个元素均有固定的位置
- 关联式容器
- 二叉树结构,各元素之间没有严格的物理上的顺序关系
- 序列式容器
- 算法
- 质变算法—增删改
- 非质变算法—查找遍历
- 迭代器—可以初步认为是一种指针
- 提供一种方法,使之能够依序寻访某个容器所含的各个元素
- 每种容器都有特定的迭代器
- 常用—双向迭代器和随机访问迭代器
- vector
- 存放内置数据类型
- 容器—vector
- 算法—for_each
- 迭代器—vector<数据类型>::iterator
- 简单举例
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;//手写遍历过程void test1(void){//创建一个vector容器vector<int> v;//向容器中插入数据v.push_back(10);//尾插法v.push_back(20);//通过迭代器访问容器中的数据for(vector<int>::iterator vi = v.begin(); vi != v.end(); vi++){cout << *vi << endl;}}//采用STL标准库void Myprint(int val){cout<< val << endl;}void test2(void){vector<int> v;v.push_back(20);v.push_back(21);for_each(v.begin(), v.end(), Myprint);//回调技术}int main(){test1();test2();return 0;}
- 存放内置数据类型
- 存放自定义数据类型
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;class Person{public:Person(string name, int age){this->m_age = age;this->m_name = name;}string m_name;int m_age;};void test1(void){vector<Person*> v_p;Person p1("p1", 10);Person p2("p2", 20);v_p.push_back(&p1);v_p.push_back(&p2);for(vector<Person*>::iterator it= v_p.begin(); it != v_p.end(); it++){cout << "my name is " << (*it)->m_name << " my age is " << (*it)->m_age << endl;}}int main(){test1();return 0;}
- 容器中嵌套容器
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;void test1(void){vector<vector<int> > v;vector<int> v_1;vector<int> v_2;for(int i = 0; i < 3; i++){v_1.push_back(i+1);v_2.push_back(i+2);}v.push_back(v_1);v.push_back(v_2);for(vector< vector<int> >::iterator v_o = v.begin(); v_o != v.end(); v_o++){//*v_o---是vector<int>类型---依然是一个指针for(vector<int>::iterator v_i = (*v_o).begin(); v_i != (*v_o).end(); v_i++){cout << *v_i << endl;}}}int main(){test1();return 0;}
相关文章:
C++STL基础
STL基础 诞生 cpp的面向对象和泛型编程的思想本质就是提高复用性诞生了STL库 基本概念 STL标准模板库STL从广义上分为容器、算法及迭代器容器和算法之间通过迭代器进行连接STL几乎所有的代码都采用了模板类或者模板函数 基本组件 容器、算法、迭代器、仿函数、适配器、空间配置…...
数学建模经验【更新中】
数学建模简单入门 一、 分工 3人,1人论文,1人代码主力,1人论文代码(前一半时间主代码,后一半时间主论文) Tips: 不养闲人,论文必须要在对代码和题目极其了解并且能跟上队友思路的情况下才能写…...
【python学习笔记】:Excel 数据的封装函数
对比其它编程语言,我们都知道Python最大的优势是代码简单,有丰富的第三方开源库供开发者使用。伴随着近几年数据分析的热度,Python也成为最受欢迎的编程语言之一。而对于数据的读取和存储,对于普通人来讲,除了数据库之…...
如何获取或设置CANoe以太网网卡信息(GET篇)
CAPL提供了一系列函数用来操作CANoe网卡。但是,但是,首先需要明确一点,不管是获取网卡信息,还是设置网卡信息,只能访问CAPL程序所在的节点下的网卡,而不是节点所在的以太网通道下的所有网卡 关于第一张图中,Class节点下,有三个网卡:Ethernet1、VLAN 1.100、VLAN 1.200…...
“终于我从字节离职了...“一个年薪50W的测试工程师的自白...
我递上了我的辞职信,不是因为公司给的不多,也不是因为公司待我不好,但是我觉得,我每天看中我憔悴的面容,每天晚上拖着疲惫的身体躺在床上,我都不知道人生的意义,是赚钱吗?是为了更好…...
【Spring】八种常见Bean加载方式
🚩本文已收录至专栏:Spring家族学习 一.引入 (1) 概述 关于bean的加载方式,spring提供了各种各样的形式。因为spring管理bean整体上来说就是由spring维护对象的生命周期,所以bean的加载可以从大的方面划分成2种形式ÿ…...
第五回:样式色彩秀芳华
import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np第五回详细介绍matplotlib中样式和颜色的使用,绘图样式和颜色是丰富可视化图表的重要手段,因此熟练掌握本章可以让可视化图表变得更美观,突出重点和凸显艺术性。…...
关于@Test单元测试
1、关于doReturndoReturn(new Test()).when(testService).updateStatusByLock(any(), any());在单元测试里这个方法可以执行到这里之间跳过不去执行,返回你想要的返回值2、关于givengiven(user.getName(any())).willReturn("张三");在单元测试里这个方法 …...
【项目实战】WebFlux整合r2dbc-mysql实战
一、背景 Webflux虽然是响应式的,但是没办法,JDBC是基于阻塞IO实现的,所以无法真正的威力发挥不出来。 但是,Webflux一旦整合了R2DBC之后,那么它将不再受限于数据库连接了,真正打通了响应式应用的任督二脉,性能才被释放。 当然,除了Spring推出的R2DBC协议,还有Orac…...
go版本分布式锁redsync使用教程
redsync使用教程前言redsync结构Pool结构Mutex结构acquire加锁操作release解锁操作redsync包的使用前言 在编程语言中锁可以理解为一个变量,该变量在同一时刻只能有一个线程拥有,以便保护共享数据在同一时刻只有一个线程去操作。对于高可用的分布式锁应…...
大数据之Hudi数据湖_大数据治理_简介_发展历史_特性_应用场景---大数据之Hudi数据湖工作笔记0001
支持hive spark flink 美国公司开发的~ 都在使用,这些企业都在用 支持hadoop的,更新,插入,删除 和数据增量处理 支持流式数据处理. hive是离线数仓 hive不支持事物 insert overwrite 底层后来通过这种方式支持了事物 insert overwrite处理数据很低效,因为更新是基于覆盖实现…...
射频功率放大器基于纵向导波的杆状构件腐蚀诊断方法的研究
实验名称:基于纵向导波的杆状构件腐蚀诊断方法研究方向:无损探伤测试设备:信号号发生器、安泰ATA-8202功率放大器、数据采集卡、直流电源、超声探头、钢杆、前置放大器。实验过程:图:试验装置试验装置如图3.2所示。监测…...
Leedcode 二分查找 理解1
一个up的理解 一、二分查找基础例题 力扣https://leetcode.cn/problems/binary-search/ 二、二分查找模板问题 带搜索区间分为3个部分: 1、[mid],直接返回 2、[left,mid-1],设置边界right mid - 1 3、[mid1,right]&#x…...
【告别篇】大家好,再见了,我转行了,在筹备创业
前言 相信大家也一直看到我的博客没有更新过了,我其实很久没有打开过博客了,也就意味着我很长一段时间都在停滞不前,没有了学习的动力。 现在我上来是想跟大家告个别 : 很多粉丝宝宝的私信我看了,但是没有回…...
Java——岛屿数量
题目链接 leetcode在线oj题——岛屿数量 题目描述 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相…...
《代码整洁之道》笔记
1章:专业人士要有专业人士素养,要有责任心,编写代码尽可能完善没有bug,有bug也要勇于承担。坚持学习,坚持练习,保证自己的专业技能。谦虚,相互学习,与顾客达成一致2章:说…...
个人网站如何集成QQ快捷登录功能?
目录 一、网站集成QQ快捷登录的好处 二、网站接入QQ快捷登录具体步骤 (1)登录到QQ互联官网 (2)进行个人开发者认证 (3)创建网站应用 (4)填写网站资料 三、如何在本地开发环境…...
从工厂打螺丝到月薪18k测试工程师,我该满足吗?
以前我比较喜欢小米那句“永远相信美好的事情即将发生”,后来发现如果不努力不可能有美好的事情发生!01高中毕业进厂5年,创业经商多次战败,为了生计辗转奔波高中毕业后我就进了工厂,第一份工作是做模具加工。从500元一…...
【相关分析-高阶绘图】MATLAB实现皮尔逊相关分析-散点直方图
虽然皮尔逊相关分析很常见,但如何更好的展现相关性、散点分布、柱状分布,以提升研究结果的美感和冲击感呢?本文拟通过MATLAB绘制包含散点分布、柱状分布、线性展示的散点直方图,有助于审稿人眼前一亮。 1、Pearson相关系数原理 Pearson相关系数(Pearson Correlation Co…...
Spark性能优化二 Shuffle机制分析
(一) 什么情况下发生shuffle 在MapReduce框架中,Shuffle是连接Map和Reduce之间的桥梁,Map阶段通过shuffle读取数据并输出到对应的Reduce;而Reduce阶段负责从Map端拉取数据并进行计算。在整个shuffle过程中,…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
