算法设计与分析——算法设计工具Standard Template Library即STL(C++模板库)概述

2023-11-20

算法设计工具——STL

前言:STL是一个功能强大的基于模板的容器库,通过直接使用这些现成的标准化组件可以大大提高算法设计的效率和可靠性

一、STL构成:

①Container(容器)
②Algorithm(算法)
③Iterator(迭代器)

二、什么是STL容器

①一个STL容器就是一种数据结构,例如链表、栈、队列等,这些数据结构在STL中都已经实现好了,在算法设计中可以直接使用它们。
②STL容器部分主要由头文件<vector><string>,<deque>,<list>,<stack>,<queue>,<set>和<map>等组成

三、什么是STL迭代器

①STL迭代器用于访问容器中的数据对象。每个容器都有自己的迭代器,只有容器自己知道如何访问自助机的元素。迭代器就像是C/C++中的指针,算法通过迭代器来定位和操作容器中的元素。
②常用的迭代器如下:
iterator:指向容器中存放元素的迭代器,用于正向遍历容器中的元素。
const_iterator:指向容器中存放元素的常量迭代器,只能读取容器中的元素。
reverse_iterator::指向容器中存放元素的反向迭代器,用于反向遍历容器中的元素。
const_reverse_iterator:指向容器中存放元素的常量反向迭代器,只能读取容器中的元素。

③迭代器的常用运算如下:
++:正向移动迭代器
- -:反向移动迭代器
✦ *:返回迭代器所指的元素值
④例如,以下语句定义一个存放int型整数的vector容器

vector<int> myv;

用户可以使用vector容器的成员函数push_back()在myv的末尾插入元素;

myv.push_back(1);
myv.push_back(2);
myv.push_back(3);

这样myv中包含3个元素,依次是1、2、3
(1)如果要正向输出所有元素,可以用正向迭代器

vector<int>::iterator it    //定义正向迭代器
for(it=myv.begin();it!=myv.end();++it)//从头到尾遍历所有元素
printf("%d",*it);//输出:1 2 3
printf("\n");

(2)如果要反向输出所有元素,可以用反向迭代器

vector<int>::reverse_iterator rit    //定义反向迭代器
for(rit=myv.rbegin();rit!=myv.rend();++rit)//从尾到头遍历所有元素
printf("%d",*rit);//输出:3 2 1
printf("\n");

四、什么是STL算法

①STL算法是用来操作容器中数据的模板函数,STL提供了大约100个实现算法的模板函数。
②STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成。
③其中<alogrithm>是所有STL头文件中最大的一个,它由一大堆模板函数组成,其功能范围涉及容器元素的比较、交换、查找、遍历、复制、修改、删除、排序和合并等操作。<numeric>的体积很小,只包括几个简单数学运算的模板函数。在<functional>中定义了一些模板类,用于声明关系函数对象

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法设计与分析——算法设计工具Standard Template Library即STL(C++模板库)概述 的相关文章

随机推荐

  • 免费接口API

    天气接口 气象局接口 http m weather com cn data 101010100 html 解析 用例 音乐接口 虾米接口 http kuang xiami com app nineteen search key 歌曲名称 d
  • 网页 序列号 逆向linux,逆向序列号生成算法(一)

    对逆向工程一直很感兴趣 工作之余自己也研究一下 好久没有练手了 OllyDBG的使用都感觉生疏了 晚上抽空先去补了补OllyDBG的使用方法 然后看到一个叫做CycleCrackMe 的序列号保护练手程序 如图1 刚好是OllyDBG入门文
  • GGally与pairs相关关系图_史上最全(二)

    作者 李誉辉 四川大学在读研究生 接上一篇 GGally与pairs相关关系图 史上最全 一 2 4 wrap 封装 其它需要指定到geom xxx 中的参数 可以通过wrap 传递给lower upper 或diag 语法 1wrap f
  • 【Pytorch with fastai】第 2 章:从模型到生产

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • MySQL常见的数据类型

    MySQL的常见数据类型 数据类型是什么 数据类型是列 存储过程的参数 表达式和局部变量的数据特征 它决定了数据的存储格式 代表了不同的信息类型 有一些数据是要存储为数字的 数字当中有些是要存储为整数 小数 日期型等 MySQL常见的数据类
  • 【第十四届蓝桥杯三月真题刷题训练——第 24 天 (3.27)& 旋转 & 附近最小 & 扫地机器人 & 窗口】

    第一题 旋转 import java util Scanner public class Main static int N 300 static int a new int N N static int b new int N N pub
  • 数模培训第二周——图论模型

    图论中最短路算法与程序实现 图论中的最短路问题 包括无向图和有向图 是一个基本且常见的问题 主要的算法有Dijkstra算法和Floyd算法 Floyd算法 简介 Floyd Warshall算法 英语 Floyd Warshall alg
  • 机器学习入门-数值特征-时间特征处理

    我们可以将一连串的时间特征进行拆分 比如 2015 03 08 10 30 00 360000 00 00 我们可以将其转换为日期类型 然后从里面提取年 月 日等时间信息 对于一些hour month等信息 我们也可以使用pd cut将ho
  • 单个IMU实现精确的轨迹重构

    惯性传感器 IMU 被广泛用于导航 运动状态研究 人体运动和步态分析等领域 然而 由于IMU的固有误差和测量误差 尤其是漂移误差 很少有人尝试基于IMU实现精确的轨迹重建 尤其是使用单个IMU 尽管如此 与视觉 红外线和超声波定位技术相比
  • C#——反射和特性

    元数据 程序是用来处理数据的 文本和特性都是数据 而我们程序本身这些也是数据 有关程序及其类型的数据被称为元数据 他们保存在程序的程序集中 反射 程序在运行时 可以查看其它程序集或其本身的元数据 一个运行的程序查看本身的元数据或者其他程序集
  • Java中基本类型自动转换与强制转换

    类型转换 Java 语言是一种强类型的语言 强类型的语言有以下几个要求 变量或常量必须有类型 要求声明变量或常量时必须声明类型 而且只能在声明以后才能使用 赋值时类型必须一致 值的类型必须和变量或常量的类型完全一致 运算时类型必须一致 参与
  • Python学习(3):批量修改文件名(以excel文件为例)

    coding utf 8 import os dir input 请输入文件路径 for root dirs files in os walk dir for i in range len files filename files i ne
  • python django 学习第3天 文件长传

    在根目录下新建media目录 在settings py 加入代码 为上传文件操作做准备 MEDIA ROOT os path join BASE DIR media MEDIA URL media 做一个新闻调查页面 在views 中加入
  • bash 括号(小括号,双小括号,中括号,双中括号,大括号)

    小括号 和大括号 主要包括一下几种 var cmd 和 exp var string var string var string var string var pattern var pattern var pattern var patt
  • 计算机网络运输层运输层协议概述

    运输层协议概述 进程之间的通信 下图说明运输层的作用 可以看出网络层为主机之间提供逻辑通信 而运输层为应用进程之间提供端到端的逻辑通信 根据应用程序的不同需求 运输层有两种不同的运输协议 1 面向连接的TCP 2 无连接的UDP 运输层的两
  • Vue-cli3更改项目logo图标

    1 图标切成对应大小 2 图标名称后缀与vue原有图标logo名称 后缀一致 favicon ico 并替换 3 vue项目根目录下 新建 vue config js 添加下列代码 module exports pwa iconPaths
  • 网络爬虫 - 1 网络爬虫基本概念和相关工具

    网络爬虫基本概念和相关工具 1 基本概念 1 什么是网络爬虫 web crawler 以前经常称之为网络蜘蛛 spider 是按照一定的规则自动浏览万维网并获取信息的机器人程序 或脚本 曾经被广泛的应用于互联网搜索引擎 使用过互联网和浏览器
  • Linux环境下的VScode使用教程

    前言 1 对于学习本文需要先有自行安装好VMware 对VMware有简单的了解 2 对于绝大多数使用Linux的人而言 经常在Windows环境下使用source insight进行编译程序 然后利用FileZilla将Windows的文
  • Vue出现弹出层时,禁止底部页面跟随滑动

    背景 最近在写一个vue项目 当出现弹出层时 发现底部页面跟随滚动 但是产品不想要这种效果 于是找各种资料 发现很多说法 但是试了试 发现有的根本就不行 比如说有人提出用vue中提供的 touchmove prevent方法来解决 但是我试
  • 算法设计与分析——算法设计工具Standard Template Library即STL(C++模板库)概述

    算法设计工具 STL 前言 STL是一个功能强大的基于模板的容器库 通过直接使用这些现成的标准化组件可以大大提高算法设计的效率和可靠性 一 STL构成 Container 容器 Algorithm 算法 Iterator 迭代器 二 什么是