STL-开篇

基本概念

STL: Standard Template Library,标准模板库

定义: c++引入的一个标准类库

特点:
1)数据结构和算法的 c++实现( 采用模板类和模板函数)
2)数据的存储和算法的分离
3)高复用性, 高移植性
组件:
1)容器( Container)
2)算法( Algorithm)
3)迭代器( Iterator)
4)仿函数( Function object)
5)适配器( Adaptor)(略)
6)空间配制器( allocator)(略)

 

容器

一共有两大类:分别是序列式容器关联式容器

定义:序列式容器的应用
分类:

序列式容器:
1)栈(stack) 后进先出的值的排列
2)队列(queue) 先进先出的值的排列
3)优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列
关联式容器:

定义:元素位置取决于特定的排序准则,和插入顺序无关。
分类:
1)集合(set/multiset)
2)内部的元素依据其值自动排序, Set 内的相同数值的元素只能出现一次,Multisets 内可包含多个数值相同的元素,内部由二叉树实现,便于查找
1)映射(map/multimap)
2)元素是成对的键值/实值,内部的元素依据其值自动排序, Map 内的相同数值的元素只能出现一次,Multimaps 内可包含多个数值相同的元素, 内部由二叉树实现,便于查找(实际上是红黑树的二叉树的变种)



算法

定义:如果说容器是数据的存储,那么算法就是操作, 只不过 stl 里面的算法都是模板函
数, 总共有 100 多个。比如算法 for_each 将为指定序列中的每一个元素调用指定的函数,
stable_sort 以 你所指定的规则对序列进行稳定性排序等等。这样一来,只要熟悉了 STL 之后,
许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要 的功能
并大大地提升效率。
算法部分主要由头文件<algorithm>, <numeric>和<functional>组 成。 <algorithm>是所
有 STL 头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认为
每个函数在很大程度上 都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍
历操作、复制、修改、移除、反转、排序、合并等等。 <numeric>体积很 小,只包括几个在
序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。 <functional>
中则定义了一些模板类, 用以声明函数对象。

 

迭代器

定义: 迭代器在 STL 中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎 STL
提供的所有算法都是通 过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所
专有的迭代器,用以存取容器中的元素。
迭代器部分主要由头文件<utility>,<iterator>和<memory>组 成。 <utility>是一个很小的
头文件,它包括了贯穿使用在 STL 中的几个模板的声明, <iterator>中提供了迭代器 使用的
许多方法,而对于<memory>的描述则十分的困难,它以不同寻常的方式为容器中的元素分
配存储空间,同时也为某些算法执行期间产生 的临时对象提供机制,<memory>中的主要部
分是模板类 allocator,它负责产生所有容器中的默认分配器。

 

仿函数

定义: 仿函数本身不是函数, 而是一个类对象, 因为类中重载了函数运算符(), 即
operator().所以类对象具有了类似函数的功能。 可以使模板重加的灵活。 后来的
lambada 的它升级版本。

 

图标总结:

共同特点

1)支持泛型
2)保存副本
3)内存管理

 

转载于:https://www.cnblogs.com/wangkeqin/p/9240273.html

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

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

相关文章

rcp rapido_为什么气流非常适合Rapido

rcp rapidoBack in 2019, when we were building our data platform, we started building the data platform with Hadoop 2.8 and Apache Hive, managing our own HDFS. The need for managing workflows whether it’s data pipelines, i.e. ETL’s, machine learning predi…

Mysql5.7开启远程

2019独角兽企业重金招聘Python工程师标准>>> 1.注掉bind-address #bind-address 127.0.0.1 2.开启远程访问权限 grant all privileges on *.* to root"xxx.xxx.xxx.xxx" identified by "密码"; 或 grant all privileges on *.* to root"%…

分类结果可视化python_可视化分类结果的另一种方法

分类结果可视化pythonI love good data visualizations. Back in the days when I did my PhD in particle physics, I was stunned by the histograms my colleagues built and how much information was accumulated in one single plot.我喜欢出色的数据可视化。 早在我获得…

算法组合 优化算法_算法交易简化了风险价值和投资组合优化

算法组合 优化算法Photo by Markus Spiske (left) and Jamie Street (right) on UnsplashMarkus Spiske (左)和Jamie Street(右)在Unsplash上的照片 In the last post, we saw how actual algorithms are developed and tested. In this post, we will figure out the level of…

PS抠发丝技巧 「选择并遮住…」

PS抠发丝技巧 「选择并遮住…」 现在的海报设计&#xff0c;大多数都有模特MM&#xff0c;然而MM的头发实用太多了&#xff0c;有的还飘起来…… 对于设计师(特别是淘宝美工)没有一个强大、快速、实用的抠发丝技巧真的混不去哦。而PS CC 2017版本开始&#xff0c;就有了一个强大…

covid 19如何重塑美国科技公司的工作文化

未来 &#xff0c; 技术 &#xff0c; 观点 (Future, Technology, Opinion) Who would have thought that a single virus would take down the whole world and make us stay inside our homes? A pandemic wave that has altered our lives in such a way that no human (bi…

python生日悖论分析_生日悖论

python生日悖论分析If you have a group of people in a room, how many do you need to for it to be more likely than not, that two or more will have the same birthday?如果您在一个房间里有一群人&#xff0c;那么您需要多少个才能使两个或两个以上的人有相同的生日&a…

rstudio 管道符号_R中的管道指南

rstudio 管道符号R基础知识 (R Fundamentals) Data analysis often involves many steps. A typical journey from raw data to results might involve filtering cases, transforming values, summarising data, and then running a statistical test. But how can we link al…

蒙特卡洛模拟预测股票_使用蒙特卡洛模拟来预测极端天气事件

蒙特卡洛模拟预测股票In a previous article, I outlined the limitations of conventional time series models such as ARIMA when it comes to forecasting extreme temperature values, which in and of themselves are outliers in the time series.在上一篇文章中 &#…

直方图绘制与直方图均衡化实现

一&#xff0c;直方图的绘制 1.直方图的概念&#xff1a; 在图像处理中&#xff0c;经常用到直方图&#xff0c;如颜色直方图、灰度直方图等。 图像的灰度直方图就描述了图像中灰度分布情况&#xff0c;能够很直观的展示出图像中各个灰度级所 占的多少。 图像的灰度直方图是灰…

时间序列因果关系_分析具有因果关系的时间序列干预:货币波动

时间序列因果关系When examining a time series, it is quite common to have an intervention influence that series at a particular point.在检查时间序列时&#xff0c;在特定时间点对该序列产生干预影响是很常见的。 Some examples of this could be:例如&#xff1a; …

微生物 研究_微生物监测如何工作,为何如此重要

微生物 研究Background背景 While a New York Subway station is bustling with swarms of businessmen, students, artists, and millions of other city-goers every day, its floors, railings, stairways, toilets, walls, kiosks, and benches are teeming with non-huma…

Linux shell 脚本SDK 打包实践, 收集assets和apk, 上传FTP

2019独角兽企业重金招聘Python工程师标准>>> git config user.name "jenkins" git config user.email "jenkinsgerrit.XXX.net" cp $JENKINS_HOME/maven.properties $WORKSPACE cp $JENKINS_HOME/maven.properties $WORKSPACE/app cp $JENKINS_…

opencv:卷积涉及的基础概念,Sobel边缘检测代码实现及卷积填充模式

具体参考我的另一篇文章&#xff1a; opencv:卷积涉及的基础概念&#xff0c;Sobel边缘检测代码实现及Same&#xff08;相同&#xff09;填充与Vaild&#xff08;有效&#xff09;填充 这里是对这一篇文章的补充&#xff01; 卷积—三种填充模式 橙色部分为image, 蓝色部分为…

无法从套接字中获取更多数据_数据科学中应引起更多关注的一个组成部分

无法从套接字中获取更多数据介绍 (Introduction) Data science, machine learning, artificial intelligence, those terms are all over the news. They get everyone excited with the promises of automation, new savings or higher earnings, new features, markets or te…

web数据交互_通过体育运动使用定制的交互式Web应用程序数据科学探索任何数据...

web数据交互Most good data projects start with the analyst doing something to get a feel for the data that they are dealing with.大多数好的数据项目都是从分析师开始做一些事情&#xff0c;以便对他们正在处理的数据有所了解。 They might hack together a Jupyter n…

PCA(主成分分析)思想及实现

PCA的概念&#xff1a; PCA是用来实现特征提取的。 特征提取的主要目的是为了排除信息量小的特征&#xff0c;减少计算量等。 简单来说&#xff1a; 当数据含有多个特征的时候&#xff0c;选取主要的特征&#xff0c;排除次要特征或者不重要的特征。 比如说&#xff1a;我们要…

【安富莱二代示波器教程】第8章 示波器设计—测量功能

第8章 示波器设计—测量功能 二代示波器测量功能实现比较简单&#xff0c;使用2D函数绘制即可。不过也专门开辟一个章节&#xff0c;为大家做一个简单的说明&#xff0c;方便理解。 8.1 水平测量功能 8.2 垂直测量功能 8.3 总结 8.1 水平测量功能 水平测量方…

深度学习数据更换背景_开始学习数据科学的最佳方法是了解其背景

深度学习数据更换背景数据科学教育 (DATA SCIENCE EDUCATION) 目录 (Table of Contents) The Importance of Context Knowledge 情境知识的重要性 (Optional) Research Supporting Context-Based Learning (可选)研究支持基于上下文的学习 The Context of Data Science 数据科学…

熊猫数据集_用熊猫掌握数据聚合

熊猫数据集Data aggregation is the process of gathering data and expressing it in a summary form. This typically corresponds to summary statistics for numerical and categorical variables in a data set. In this post we will discuss how to aggregate data usin…