首页 > 其他分享 >4.2、STL初识

4.2、STL初识

时间:2024-03-23 20:33:05浏览次数:20  
标签:容器 质变 迭代 4.2 STL 算法 初识 数据结构

1、STL的诞生

  1. 长久以来,软件界一直希望建立一种可重复利用的东西。
  2. C++ 面向对象泛型编程 思想,目的就是 复用性的提升
  3. 大多数情况下,数据结构和算法都未能有一套标准,导致被迫从事大量的重复工作。
  4. 为了建立数据结构和算法的一套标准,诞生了STL

2、STL的基本概念

  1. STL(standard Template Libary,标准模板库
  2. STl从广义上分为:容器(container)、算法(algorithm)、迭代器(iterator)
  3. 容器算法之间通过迭代器进行无缝连接
  4. STL几乎所有的代码都采用了模板类或者模板函数

3、STL六大组件

STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。

  1. 容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据。
  2. 算法:各种常用的算法,如sort、find、copy、for_each等
  3. 迭代器:扮演了容器与算法之间的胶合剂。
  4. 仿函数:行为类似函数,可作为算法的某种策略。
  5. 适配器:一种用来修饰容器或者仿函数或迭代器接口的东西。
  6. 空间配置器:负责空间的配置与管理。

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

容器:

置物之所也
STL容器就是将运用最广泛的一些数据结构实现出来
常用的数据结构:数组,链表,树,栈,集合,映射表 等。
这些容器分为 序列式容器关联式容器两种:
序列式容器:强调值的排序,序列式容器中的每个元素均有固定的位置。
关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序关系。

算法:

问题之解法也
有限的步骤,解决逻辑或数学上的问题,这一门学科我们叫做算法(Algorithms)
算法分为:质变算法非质变算法
质变算法:是指运算过程中会更改区间内的元素的内容。例如拷贝,替换,删除等等
非质变算法:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等等

迭代器:

容器和算法之间粘合剂
提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。
每个容器都有自己专属的迭代器
迭代器使用非常类似于指针,初学阶段我们可以先理解迭代器为指针

image
常用的容器中迭代器种类为双向迭代器,和随机访问迭代器

标签:容器,质变,迭代,4.2,STL,算法,初识,数据结构
From: https://www.cnblogs.com/H43724334/p/18091623

相关文章

  • 【OceanBase】v4.2.1 集群命令汇总
    查看集群信息#查看所有集群obdclusterlist#启动集群ob3clusterobdclusterstartob3cluster#停止集群obdclusterstopob3cluster登录数据库#root用户的sys租户登录数据库obclient-hxxx.xxx.xxx.xxx-uxxx:sys:root-P2883-pxxxxxx-c-A-DOceanbas......
  • redis 初识
    redis是一个开源产品 ,是一种键值对存储形式的数据库 ,他的值可以是多种数据类型如数字,字符串,列表等redis的特性  1支持持久化存储-主要是会对数据异步存储在磁盘上,这里利用的技术主要rdb,auf   2支持多种数据类型-如字符串,列表,哈希,集合,有序集合 ......
  • 前端学习<一>HTML——03初识HTML
    编辑器相关前端开发的编辑器软件,我首先推荐VSCode,其次推荐SublimeText。有人说WebStorm也不错?但真实情况是,自从VSCode问世之后,用WebStorm的人越来越少了。PS:文件的后缀名不能决定文件格式,只能决定打开文件打开的方式。VSCode的使用详情请移步至:后续主页更新S......
  • 26.C++ STL常用容器—deque
    如果想单独一对一辅导学习C++、Java、Python编程语言的可以加微信咨询3.3deque容器3.3.1deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比v......
  • JavaScript初识及基本语法详解
    JavaScript是一种轻量级的解释型或即时编译型的编程语言。它最初被设计为在浏览器中用于与网页进行交互,但随着时间的推移,它已经成为了后端开发、游戏开发、桌面应用开发等多个领域的重要工具。1.JavaScript初识1.1历史与用途历史:由BrendanEich在1995年开发,最初......
  • 2024.2.29校招 实习 内推 面经
    绿*泡*泡VX:neituijunsir  交流*裙,内推/实习/校招汇总表格1、校招|影石Insta3602024春季校园招聘启动(内推)校招|影石Insta3602024春季校园招聘启动(内推)2、校招|虹软科技2024届校招春招批通道开启(内推)校招|虹软科技2024届校招春招批通道开启(内推)3、校招|......
  • 初识 Linux 操作系统_实验案例一
    实验案例一:安装Ubuntu操作系统1、实验环境    BDQN公司部分员工使用的Windows操作系统的笔记本式计算机频繁遭受到病毒.木马的威胁,公司要求管理员小王近期将这些员工的系统更换为Ubuntu操作系统。在进行前期准备工作时,需要公司现有的系统管理员尽快掌握Ubuntu操作......
  • 【python】(02)初识迭代器Iterator
    系列文章回顾【python】(01)初识装饰器Decorator【python】(02)初识迭代器Iterator文章目录一.迭代器的定义二.迭代器的作用三.实际代码示例四.使用注意事项五.常见问题迭代器是Python中非常重要的概念,通过灵活运用迭代器可以实现高效的数据遍历和处......
  • C++初阶:初识模板
        在之前的C与C++编程中,针对实现同样类型功能的函数我们学会使用了函数重载,终于可以不用记忆多个功能相同但是函数名不同的函数了喵。但是在实现的时候仍然显得有点不太方便,有些冗余。世界是懒人的世界,为了方便懒人的使用,模板应运而生~目录一、引子二、函数模......
  • 红黑树(STL-ordered_map)
    目录一、概念: 二、红黑树的结点三、红黑树的插入四、迭代器(核心:结点指针)五、应用 一、概念:    为了保持AVL树的平衡性,AVL树需要频繁地调整全树整体拓扑结构,代价较大。为此在AVL树的平衡标准上进一步放宽条件,引入红黑树的概念:每个结点都是黑色或者红色......