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,一经查实,立即删除!

相关文章

Symbol Mc1000 声音的设置以及播放

首先引用Symbol.Audio 加一命名空间using Symbol.Audio; /声音设备的设置 //Select Device from device list Symbol.Audio.Device MyDevice (Symbol.Audio.Device)Symbol.StandardForms.SelectDevice.Select( Symbol.Audio.Controller.Title, Symbol.Audio.Devic…

/bin/bash^M: 坏的解释器: 没有那个文件或目录

在win下编辑的时候&#xff0c;换行结尾是\n\r &#xff0c; 而在linux下 是\n&#xff0c;所以会多出来一个\r&#xff0c;这样会出现错误 此时执行 sed -i s/\r$// file.sh 将file.sh中的\r都替换为空白&#xff0c;问题解决转载于:https://www.cnblogs.com/zzdbullet/p/9890…

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…

pandas处理丢失数据与数据导入导出

3.4pandas处理丢失数据 头文件&#xff1a; import numpy as np import pandas as pd丢弃数据部分&#xff1a; dates pd.date_range(20130101,periods6) df pd.DataFrame(np.random.randn(6,4),indexdates,columns[A,B,C,D]) df.iloc[0,1] np.nan df.iloc[1,2] np.nanp…

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…

Symbol Mc1000 快捷键 的 设置 事件 开发

switch (e.KeyCode) { ///数据 case Keys.F1://清除数据 if(File.Exists("Storage Card/CG.sdf")) { Mc.gConn.Close(); Mc.gConn.Dispose(); File.Delete("Storage Card/CG.sdf"); } MessageBox.S…

pandas合并concatmerge和plot画图

3.6&#xff0c;3.7pandas合并concat&merge 头文件&#xff1a; import pandas as pd import numpy as npconcat基础合并用法 df1 pd.DataFrame(np.ones((3,4))*0,columns [a,b,c,d]) df2 pd.DataFrame(np.ones((3,4))*1,columns [a,b,c,d]) df3 pd.DataFrame(np.ones…

Android跳转WIFI界面的四种方式

第一种 Intent intent new Intent(); intent.setAction("android.net.wifi.PICK_WIFI_NETWORK"); startActivity(intent); 第二种 startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)); 第三种 Intent i new Intent(); if(android.os.Buil…

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…

Symbol Mc1000 Text文本阅读器整体代码

using System; using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Collections;using System.IO;namespace text{ /// <summary> /// Form1 的摘要说明。 /// </summary> public c…

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…

统计0-n数字中出现k的次数

/*** 统计0-n数字中出现k的次数&#xff0c;其中k范围为0-9 */ public static int countOne(int k, int n) {if (k > n) {return 0;}int sum 0;int right 0;for (int i 0; n > 0; i) {int last n % 10;sum last * i * (int) Math.pow(10, i - 1);if (k 0) {sum - (…

房价预测 search Search 中对数据预处理的学习

对于缺失的数据&#xff1a; 我们对连续数值的特征做标准化&#xff08;standardization&#xff09;&#xff1a;设该特征在整个数据集上的均值为 μ &#xff0c;标准差为 σ 。那么&#xff0c;我们可以将该特征的每个值先减去 μ 再除以 σ 得到标准化后的每个特征值。对于…

3.6.1.非阻塞IO

本节讲解什么是非阻塞IO&#xff0c;如何将文件描述符修改为非阻塞式 3.6.1.1、阻塞与非阻塞 &#xff08;1&#xff09;阻塞是指函数调用会被阻塞。本质是当前进程调用了函数&#xff0c;进入内核里面去后&#xff0c;因为当前进程的执行条件不满足&#xff0c;内核无法里面完…

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.在上一篇文章中 &#…