STL-概述

C++ STL概述 C++ STL概述,将STL分为几个主要部分,可参照此分块进行系统性学习。 阅读详情

STL概述

  STL(Standard Template Library)从命名可以看出,它的本质就是模板,stl是标准模板库,是内嵌在c++语言中的一系列模板类和模板函数的集合体。它为我们提供了大量高效、灵活的数据存储结构及操作接口,让开发人员能够更好的专注在业务方面。
  stl中有六大部件,分别为容器、迭代器、算法、分配器、适配器、仿函数,下面我们一一来介绍其作用。

容器

  容器就是指能够存放数据的数据结构,list是容器,数组也是容器,而stl中也为我们提供了多种容器供我们使用,而不同的容器有着不同的特性,这个我们后面再说。常用的容器有:数组、vector、list、dequeue、queue、map、set等,不常用的有stack、multiset、multimap、hash_set、hash_map等。

迭代器

  为啥要有迭代器(Iterator)?试想一下,假设我们存放了100个数据在容器里,那么我们该如何访问这些数据呢?我们知道指针是干嘛的,我们能够通过指针间接访问到一块内存,而迭代器实际上的作用和指针类似,也就是通过迭代器能够访问到容器的各个位置,毕竟有的容器它的内存是非连续的,如果没有迭代器的介入,我们又如何知道每个数据存放的地址呢?从而访问到不同位置的数据呢?

算法

  算法就是方法,也就是stl为我们提供的针对容器的各种各样的操作方法,比如find(查找)、sort(排序)等~

分配器

  可以理解成stl在各个容器的初始化过程中,允许我们自定义每个对象的初始化策略,实际上类似于c++中重写operator new的意思,只不过operator new只会在申请堆内存的时候调用一次,而allocate是针对于整个容器的内存分配策略,这块我们在后面涉及到的时候再扩展,目前知道有这么个东西就行

适配器

  我们在学设计模式的时候,可能会接触到迭代器模式,它的主旨在于将一个不那么符合要求的类通过修饰转换成另外一个类,从而能够符合我们的期望。
  而stl中的适配器意思大概也是如此,将容器、仿函数等配件转换成另外一个模样,从而能够符合各种各样的使用需求。
  比如容器适配器的stack、queue在原有容器dequeue可以双端插入删除数据的特性中,衍生出的新容器,能够满足只有先进后出和先进先出的特性、并且不能操作值。
  而仿函数适配器也是改变仿函数的接口,比如是std::bind允许将一个函数对象重新定义成另一个函数对象,从而在调用的时候会有不同的表现。

仿函数

  仿函数实际上也是类模板,重载了操作符(),从而我们可以传递一个仿函数或者直接调用一个仿函数,常见的仿函数有less、greater、plus、minus等,而我们在调用算法sort中也可以传递仿函数来自定义排序的策略。

小结

  大家通过上面可以很明显的感觉到stl的六大部件是相辅相成工作的,单独拿出来都是没办法使用的。
  实际上stl也是通过c++语言实现出来的一个工具库,只不过经过很多版本的迭代之后,其各个容器及算法都是目前公认的最方便且效率很高,所有我们开发人员就不用重复造轮子,而直接通过stl就可以进行各种数据的管理~!
  后面章节的关注点会聚焦在容器和迭代器以及算法中,对于分配器和适配器等内容,会在涉及到的时候进行单独的说明,而不再单独研究。

win11 labelme 汉化菜单 【代码】win11 labelme 汉化菜单。 阅读详情

相关推荐

电磁兼容标准体系解析:从基础到认证的完整指南

本文系统解析了电磁兼容(EMC)标准体系,从基础概念到认证流程提供完整指南。文章阐述了EMC对于产品可靠性与市场准入的重要性,详细拆解了基础标准、通用标准、产品类标准及认证流程四层结构,并结合5G设备与工业控制等实战案例,为工程师提供了从设计初期到认证测试的高效应用策略。

weixin_29294975的博客 355

STL 库概述

STL将算法和数据结构分离,非面向对象的本质。下面是STL库概述的Xmind方式总计(持续更新)

Dorothy 602

STM32 ADC+DMA实战:手把手教你驱动XGZP6847A压力传感器(附完整代码)

本文详细介绍了如何使用STM32的ADC和DMA外设驱动XGZP6847A压力传感器,包括硬件连接、ADC配置、DMA高效传输实现以及数据处理与校准方法。通过实战案例和完整代码,帮助开发者快速掌握高精度压力数据采集技术,适用于工业控制和医疗设备等领域。

weixin_42570484的博客 404

STL技术——STL概述和入门

STL介绍STL( standard template library),译为标准模板库或者泛型库,是 C++ 提供的一个基础模板的集合。STL 已完全被内置到支持 C++ 的编译器中,不用另外安装。STL广义上可以分为:容器container(本质上就是封装有数据结构的模板类)、算法algorithm、迭代器iterator;容器和算法之间通过迭代器无缝连接。

万里顾一程的博客 4960

2026 最新实战教程:AI 重构开发全流程(从需求→上线→运维)

1)做什么系统2)技术栈3)功能模块4)部署要求plaintext我要做一个:待办事项(Todo)全栈应用技术栈:前端:React + TypeScript + Tailwind后端:Node.js + Express + MongoDB部署:Docker + 本地运行(后续可上云)功能:- 增删改查任务- 任务状态切换(完成/未完成)- 简单错误处理请按企业级标准生成:架构设计 + 全部代码 + 接口文档 + 启动命令。

qq_35779316的博客 1699

arcgis select by attributes一次选多个_视频:如何基于ArcGIS与GeoDa求莫兰指数和绘制莫兰散点图?...

莫兰指数是全域莫兰指数(Global Moran's I)的简称,是澳大利亚统计学家帕特里克·阿尔弗雷德·皮尔斯·莫兰(Patrick Alfred Pierce Moran),在1950年提出的。详细介绍,如下:莫兰指数取值范围在-1.0至1.0之间。当Moran's I >0时,表示空间正相关性,其值越大,空间相关性越明显;当Moran's I <0时,表示空间负相关性...

weixin_39948247的博客 1760

STL概述——郭炜

1.string类 string 类是下面的模板类实例化出来的 typedef basic_string<char> string; 1.1 sting对象的实例化 string s1("Hello"); string month = "March"; string s2(8,’x’); 错误的范例: string error1 = ‘c’; // 错 string erro...

qq_28912319的博客 2491

【数字IC/FPGA】低功耗设计

低功耗设计方法功耗的类型低功耗设计方法静态低功耗技术多阈值工艺方法电源门控方法体偏置动态低功耗技术多电压域(Multi-Voltage Domain)预计算门控时钟门级优化技术毛刺的消除逻辑级优化物理级优化控制输入向量低功耗Soc系统的动态管理动态电压及频率调节技术低功耗操作系统存储器功耗控制总结 功耗的类型 CMOS电路中的功耗由两部分构成,第一部分为负载电容充放电时引起的功耗,称为动态功耗,另一部分为漏电流引起的功耗,称为静态功耗。其中动态功耗包括翻转功耗和短路功耗。翻转功耗是数字电路中信号翻转时电容充

qq_40268672的博客 3072

C++STL系列之概述

STL – 标准模板库(standard template library),涵盖了数据结构和算法,充分体现了C++是一门面向对象的语言,以前在C语言需要自己造轮子,现在使用STL可以更加简单,也隐藏了内部的实现。STL的版本较多,当前主流的版本比如libstdc++,MSVC STL等等,目前Linux系统下使用最为广泛的版本是libstdc++,该版本以 SGI STL 为基础发展而来,参考源代码可以参考这个版本。

weixin_62188419的博客 707

如何使用CPU-Z获取内存条频率信息(编程)

当我们需要获取计算机内存条的频率信息时,可以利用CPU-Z这个工具来实现。CPU-Z是一款专门用于获取计算机硬件信息的工具,它提供了API接口,我们可以通过编程的方式来获取内存条频率信息。你可以从CPU-Z官方网站下载适用于你的操作系统的CPU-Z程序,并从安装目录中找到。函数,我们可以初始化CPU-Z,如果返回值不为0,则表示初始化失败。函数来获取内存条频率信息,如果返回值小于等于0,则表示获取失败。函数来初始化CPU-Z并获取内存条频率信息。最后,我们将获取到的内存条频率信息打印输出,并使用。

ByteProwl的博客 460

19. SAP UI5 应用开发教程之十九 - SAP UI5 数据类型和复杂的数据绑定

通过本教程前面的步骤SAP UI5 初学者教程之十七 - 聚合绑定在 UI5 复合控件中的使用的介绍,我们已经学会了如何在 SAP UI5 里显示列表,如下图所示: 本步骤我们给该列表添加更多的业务数据,比如每张发票的金额。 按照本文的步骤完成的 SAP UI5 应用,列表如下图所示: 可以看到,同前一个步骤相比,现在 Invoices 表格里,每张发票的金额和货币单位已经显示出来了。 为了实现这个效果,本步骤的源代码位于我的 Github 这个文件夹下面: https://github.com/wan

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3692

STL概述

STL概述

m0_46427273的博客 218

黑猫带你学UFS协议第23篇:UFS固件升级操作详解(FFU)

摘要:本文介绍了UFS固件更新(FFU)的实现方法与注意事项。根据UFS3.1 JEDEC协议,FFU通过write buffer命令(MODE=0Eh)下载FW固件,随后必须进行power cycle或硬件复位生效。文章详细阐述了FFU操作的10条规则,包括数据分片传输要求、寄存器访问限制等,同时指出协议未明确的厂商实现差异。关键寄存器包括bFFUTimeout、bDeviceFFUStatus和fPermanentlyDisableFwUpdate。

黑猫奥利奥的博客 1万+

STL 概述

三十分钟掌握STL 这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离。尽

wuce_bai的博客 390

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

STL算法概述

STL算法概述 简介: STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象 注意: 编译器无法检测出所传递的迭代器是一个无效形式的迭代器,当然也无法给出算法函数错误的提示,因为迭代器并不是真实的类别,它只是传递给函数模板的一种参数格式而已 STL中算法分类: 操作对象 直

hishyboy的专栏 478

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

五 STL算法概述

一 概述: (1)算法的一般形式: *所有泛型算法的前两个参数都是一对迭代器,通常称为first和last,用以标示算法的操作区间。 *这个[first,last)区间的必要条件是,first必须能够经由累加(increment)操作符的反复运用,从first到达list。 *任何一个STL算法的声明都,都表现出它所需要的最低程度的迭代器类型。 *许多的STL算法不只支持一个版本,某个版

linux系统、网络编程和分布式计算 918

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++之STL概述

1 什么是STL         STL就是C++ Standard Template Library,也就是标准模版库,是一个高效的C++程序库。STL包含六大组件:容器(container)、算法(algorithm)、迭代器(iterator)、配置器(allocator)、适配器(adapter)和函数对象(function object)。我们在学习这些组件时,应该按其重要程度来区别学

our2848884的专栏 339

C++STL概述

STL概述1 简介2 六大组件3 优点 1 简介 STL(Standard Template Library),标准模板库。是惠普实验室开发的一系列软件的统称,现在主要用在C++中,但引入C++之前在该技术已经存在很长时间。STL从广义上分为容器、算法、迭代器,容器和算法之间通过迭代器进行无缝连接。 STL几乎所有的代码都采用了模板类或者模板函数,这相比传统的函数和类组成的库来说提供了更好的代码重用机会。C++标准程序中隶属于STL的占到了80%以上。 容器(container)、算法(algorit

qq_45311905的博客 629

stl概述

c++中期 先学数据结构再根据给定的数据结构写算法 stl是基于c++的标准模板库 1998年出现的一个标准 容器 算法 vector deque list map (set multiet multimap) 分为两类 1.序列式容器可序的群集 每个元素都有固定的位置 元素的位置取决于插入的时间地点 和元素值无关(list deque vector)      2.关系(联)式...

weixin_30446197的博客 178

c++ STL-STL概述

STL简介: STL(Standard Template Library),即标准模板库,是c++的标准程序库。里面包含了各种数据结构的具体实现,具有很高的可复用性。对程序而言,熟练掌握这些用法写代码将会事半功倍。 STL六大组件: 1. 容器(Container) 各种数据结构,例如: vector、list、deque、set、map等。STL容器实际就是一个class template(模板)。 2. 算法 实现各种常用算法,例如sort、s...

cheriyou_的博客 426

C++ 标准库 STL 概述

转自http://blog.youkuaiyun.com/skyman_2001/archive/2006/01/14/579463.aspx注:参考自《The C++ Standard Library》一、基本概念1. 名字空间std        三种使用方式:        (1) 直接用标识符std限定修饰。如:        std : : cout        

ixigua的专栏 1087

[STL基础]STL概述+总结

什么是STL STL就是StandardTemplateLibrary,标准模板库。STL是泛型编程的实例,用到的技术就是类模板和函数模板。STL的一个重要特点是数据结构和算法的分离。 模板:所谓模板是一种使用无类型参数来产生一系列函数或类的机制。通过模板可以产生类或函数的集合,使它们操作不同的数据类型,从而避免需要为每一种数据类型产生一个独立的类或函数。 STL简介 STL的代码从...

超越 2191
上一篇: C++杂谈之一二三-new
下一篇: C++杂谈之一二三-智能指针
爱Code,爱Coke
博客等级 码龄11年 33粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值