當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]?? ?STL中的所有算法(70個(gè)) ? ???STL算法部分主要由頭文件,,組成。要使用 STL中的算法函數(shù)必須包含頭文件,對(duì)于數(shù)值算法須包含,中則定義了一些模板類,用來(lái)聲明函數(shù)對(duì)象。?

??

?STL中的所有算法(70個(gè))

?

???STL算法部分主要由頭文件,,組成。要使用 STL中的算法函數(shù)必須包含頭文件,對(duì)于數(shù)值算法須包含,中則定義了一些模板類,用來(lái)聲明函數(shù)對(duì)象。
??? STL中算法大致分為四類:
??????? 1、非可變序列算法:指不直接修改其所操作的容器內(nèi)容的算法。
??????? 2、可變序列算法:指可以修改它們所操作的容器內(nèi)容的算法。
??????? 3、排序算法:包括對(duì)序列進(jìn)行排序和合并的算法、搜索算法以及有序序列上的集合操作。
??????? 4、數(shù)值算法:對(duì)容器內(nèi)容進(jìn)行數(shù)值計(jì)算。

??? 以下對(duì)所有算法進(jìn)行細(xì)致分類并標(biāo)明功能:
??? <一>查找算法(13個(gè)):判斷容器中是否包含某個(gè)值
???adjacent_find:???????????在iterator對(duì)標(biāo)識(shí)元素范圍內(nèi),查找一對(duì)相鄰重復(fù)元素,找到則返回指向這對(duì)元素的第一個(gè)元素的ForwardIterator。否則返回last。重載版本使用輸入的二元操作符代替相等的判斷。
??? binary_search:???????????在有序序列中查找value,找到返回true。重載的版本實(shí)用指定的比較函數(shù)對(duì)象或函數(shù)指針來(lái)判斷相等。
???count:???????????????????利用等于操作符,把標(biāo)志范圍內(nèi)的元素與輸入值比較,返回相等元素個(gè)數(shù)。
???count_if:????????????????利用輸入的操作符,對(duì)標(biāo)志范圍內(nèi)的元素進(jìn)行操作,返回結(jié)果為true的個(gè)數(shù)。
???equal_range:?????????????功能類似equal,返回一對(duì)iterator,第一個(gè)表示lower_bound,第二個(gè)表示upper_bound。
???find:????????????????????利用底層元素的等于操作符,對(duì)指定范圍內(nèi)的元素與輸入值進(jìn)行比較。當(dāng)匹配時(shí),結(jié)束搜索,返回該元素的一個(gè)InputIterator。
???find_end:????????????????在指定范圍內(nèi)查找"由輸入的另外一對(duì)iterator標(biāo)志的第二個(gè)序列"的最后一次出現(xiàn)。找到則返回最后一對(duì)的第一個(gè)ForwardIterator,否則返回輸入的"另外一對(duì)"的第一個(gè)ForwardIterator。重載版本使用用戶輸入的操作符代替等于操作。
???find_first_of:???????????在指定范圍內(nèi)查找"由輸入的另外一對(duì)iterator標(biāo)志的第二個(gè)序列"中任意一個(gè)元素的第一次出現(xiàn)。重載版本中使用了用戶自定義操作符。
???find_if:?????????????????使用輸入的函數(shù)代替等于操作符執(zhí)行find。
???lower_bound:?????????????返回一個(gè)ForwardIterator,指向在有序序列范圍內(nèi)的可以插入指定值而不破壞容器順序的第一個(gè)位置。重載函數(shù)使用自定義比較操作。
???upper_bound:?????????????返回一個(gè)ForwardIterator,指向在有序序列范圍內(nèi)插入value而不破壞容器順序的最后一個(gè)位置,該位置標(biāo)志一個(gè)大于value的值。重載函數(shù)使用自定義比較操作。
???search:??????????????????給出兩個(gè)范圍,返回一個(gè)ForwardIterator,查找成功指向第一個(gè)范圍內(nèi)第一次出現(xiàn)子序列(第二個(gè)范圍)的位置,查找失敗指向last1。重載版本使用自定義的比較操作。
??? search_n:????????????????在指定范圍內(nèi)查找val出現(xiàn)n次的子序列。重載版本使用自定義的比較操作。


???<二>排序和通用算法(14個(gè)):提供元素排序策略
???inplace_merge:???????????合并兩個(gè)有序序列,結(jié)果序列覆蓋兩端范圍。重載版本使用輸入的操作進(jìn)行排序。
???merge:???????????????????合并兩個(gè)有序序列,存放到另一個(gè)序列。重載版本使用自定義的比較。
???nth_element:?????????????將范圍內(nèi)的序列重新排序,使所有小于第n個(gè)元素的元素都出現(xiàn)在它前面,而大于它的都出現(xiàn)在后面。重載版本使用自定義的比較操作。
???partial_sort:????????????對(duì)序列做部分排序,被排序元素個(gè)數(shù)正好可以被放到范圍內(nèi)。重載版本使用自定義的比較操作。
??? partial_sort_copy:???????與partial_sort類似,不過(guò)將經(jīng)過(guò)排序的序列復(fù)制到另一個(gè)容器。
???partition:???????????????對(duì)指定范圍內(nèi)元素重新排序,使用輸入的函數(shù),把結(jié)果為true的元素放在結(jié)果為false的元素之前。
???random_shuffle:?????????? 對(duì)指定范圍內(nèi)的元素隨機(jī)調(diào)整次序。重載版本輸入一個(gè)隨機(jī)數(shù)產(chǎn)生操作。
???reverse:?????????????????將指定范圍內(nèi)元素重新反序排序。
???reverse_copy:????????????與reverse類似,不過(guò)將結(jié)果寫入另一個(gè)容器。
???rotate:??????????????????將指定范圍內(nèi)元素移到容器末尾,由middle指向的元素成為容器第一個(gè)元素。
??? rotate_copy:?????????????與rotate類似,不過(guò)將結(jié)果寫入另一個(gè)容器。
???sort:????????????????????以升序重新排列指定范圍內(nèi)的元素。重載版本使用自定義的比較操作。
???stable_sort:?????????????與sort類似,不過(guò)保留相等元素之間的順序關(guān)系。
???stable_partition:???????? 與partition類似,不過(guò)不保證保留容器中的相對(duì)順序。

???<三>刪除和替換算法(15個(gè))
??? copy:????????????????????復(fù)制序列
???copy_backward:???????????與copy相同,不過(guò)元素是以相反順序被拷貝。
???iter_swap:???????????????交換兩個(gè)ForwardIterator的值。
???remove:??????????????????刪除指定范圍內(nèi)所有等于指定元素的元素。注意,該函數(shù)不是真正刪除函數(shù)。內(nèi)置函數(shù)不適合使用remove和remove_if函數(shù)。
???remove_copy:?????????????將所有不匹配元素復(fù)制到一個(gè)制定容器,返回OutputIterator指向被拷貝的末元素的下一個(gè)位置。
???remove_if:???????????????刪除指定范圍內(nèi)輸入操作結(jié)果為true的所有元素。
???remove_copy_if:?????????? 將所有不匹配元素拷貝到一個(gè)指定容器。
???replace:?????????????????將指定范圍內(nèi)所有等于vold的元素都用vnew代替。
??? replace_copy:????????????與replace類似,不過(guò)將結(jié)果寫入另一個(gè)容器。
???replace_if:??????????????將指定范圍內(nèi)所有操作結(jié)果為true的元素用新值代替。
???replace_copy_if:????????? 與replace_if,不過(guò)將結(jié)果寫入另一個(gè)容器。
???swap:????????????????????交換存儲(chǔ)在兩個(gè)對(duì)象中的值。
???swap_range:??????????????將指定范圍內(nèi)的元素與另一個(gè)序列元素值進(jìn)行交換。
???unique:??????????????????清除序列中重復(fù)元素,和remove類似,它也不能真正刪除元素。重載版本使用自定義比較操作。
???unique_copy:?????????????與unique類似,不過(guò)把結(jié)果輸出到另一個(gè)容器。


???<四>排列組合算法(2個(gè)):提供計(jì)算給定集合按一定順序的所有可能排列組合
???next_permutation:???????? 取出當(dāng)前范圍內(nèi)的排列,并重新排序?yàn)橄乱粋€(gè)排列。重載版本使用自定義的比較操作。
??? prev_permutation:????????取出指定范圍內(nèi)的序列并將它重新排序?yàn)樯弦粋€(gè)序列。如果不存在上一個(gè)序列則返回false。重載版本使用自定義的比較操作。


???<五>算術(shù)算法(4個(gè))
???accumulate:??????????????iterator對(duì)標(biāo)識(shí)的序列段元素之和,加到一個(gè)由val指定的初始值上。重載版本不再做加法,而是傳進(jìn)來(lái)的二元操作符被應(yīng)用到元素上。
???partial_sum:?????????????創(chuàng)建一個(gè)新序列,其中每個(gè)元素值代表指定范圍內(nèi)該位置前所有元素之和。重載版本使用自定義操作代替加法。
???inner_product:???????????對(duì)兩個(gè)序列做內(nèi)積(對(duì)應(yīng)元素相乘,再求和)并將內(nèi)積加到一個(gè)輸入的初始值上。重載版本使用用戶定義的操作。
??? adjacent_difference:????? 創(chuàng)建一個(gè)新序列,新序列中每個(gè)新值代表當(dāng)前元素與上一個(gè)元素的差。重載版本用指定二元操作計(jì)算相鄰元素的差。


???<六>生成和異變算法(6個(gè))
???fill:????????????????????將輸入值賦給標(biāo)志范圍內(nèi)的所有元素。
??? fill_n:??????????????????將輸入值賦給first到first+n范圍內(nèi)的所有元素。
???for_each:????????????????用指定函數(shù)依次對(duì)指定范圍內(nèi)所有元素進(jìn)行迭代訪問(wèn),返回所指定的函數(shù)類型。該函數(shù)不得修改序列中的元素。
???generate:????????????????連續(xù)調(diào)用輸入的函數(shù)來(lái)填充指定的范圍。
???generate_n:??????????????與generate函數(shù)類似,填充從指定iterator開始的n個(gè)元素。
??? transform:???????????????將輸入的操作作用與指定范圍內(nèi)的每個(gè)元素,并產(chǎn)生一個(gè)新的序列。重載版本將操作作用在一對(duì)元素上,另外一個(gè)元素來(lái)自輸入的另外一個(gè)序列。結(jié)果輸出到指定容器。

???<七>關(guān)系算法(8個(gè))
???equal:???????????????????如果兩個(gè)序列在標(biāo)志范圍內(nèi)元素都相等,返回true。重載版本使用輸入的操作符代替默認(rèn)的等于操作符。
???includes:????????????????判斷第一個(gè)指定范圍內(nèi)的所有元素是否都被第二個(gè)范圍包含,使用底層元素的<操作符,成功返回true。重載版本使用用戶輸入的函數(shù)。
??? lexicographical_compare:? 比較兩個(gè)序列。重載版本使用用戶自定義比較操作。
???max:?????????????????????返回兩個(gè)元素中較大一個(gè)。重載版本使用自定義比較操作。
???max_element:?????????????返回一個(gè)ForwardIterator,指出序列中最大的元素。重載版本使用自定義比較操作。
???min:?????????????????????返回兩個(gè)元素中較小一個(gè)。重載版本使用自定義比較操作。
???min_element:?????????????返回一個(gè)ForwardIterator,指出序列中最小的元素。重載版本使用自定義比較操作。
???mismatch:????????????????并行比較兩個(gè)序列,指出第一個(gè)不匹配的位置,返回一對(duì)iterator,標(biāo)志第一個(gè)不匹配元素位置。如果都匹配,返回每個(gè)容器的last。重載版本使用自定義的比較操作。

???<八>集合算法(4個(gè))
???set_union:???????????????構(gòu)造一個(gè)有序序列,包含兩個(gè)序列中所有的不重復(fù)元素。重載版本使用自定義的比較操作。
???set_intersection:???????? 構(gòu)造一個(gè)有序序列,其中元素在兩個(gè)序列中都存在。重載版本使用自定義的比較操作。
???set_difference:?????????? 構(gòu)造一個(gè)有序序列,該序列僅保留第一個(gè)序列中存在的而第二個(gè)中不存在的元素。重載版本使用自定義的比較操作。
??? set_symmetric_difference: 構(gòu)造一個(gè)有序序列,該序列取兩個(gè)序列的對(duì)稱差集(并集-交集)。
?
??? <九>堆算法(4個(gè))
???make_heap:???????????????把指定范圍內(nèi)的元素生成一個(gè)堆。重載版本使用自定義比較操作。
???pop_heap:????????????????并不真正把最大元素從堆中彈出,而是重新排序堆。它把first和last-1交換,然后重新生成一個(gè)堆??墒褂萌萜鞯腷ack來(lái)訪問(wèn)被"彈出"的元素或者使用pop_back進(jìn)行真正的刪除。重載版本使用自定義的比較操作。
???push_heap:???????????????假設(shè)first到last-1是一個(gè)有效堆,要被加入到堆的元素存放在位置last-1,重新生成堆。在指向該函數(shù)前,必須先把元素插入容器后。重載版本使用指定的比較操作。
???sort_heap:???????????????對(duì)指定范圍內(nèi)的序列重新排序,它假設(shè)該序列是個(gè)有序堆。重載版本使用自定義比較操作。















?

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉