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.pswp.cn/news/389339.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389339.shtml
英文地址,請注明出處:http://en.pswp.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.在上一篇文章中 &#…