STL 演算法細節

2021-05-21 20:56:26 字數 912 閱讀 7905

一、概論

1、質變演算法--會改變操作物件的值

2、非質變演算法-不改變操作物件的值

3、所有泛型演算法的前兩個引數都是一對迭代器

二、演算法的泛化過程

1、將乙個敘述完整的演算法轉化為程式**,是任何訓練有素的程式設計師勝任愉快的工作。

2、泛化是乙個漸進過程,從具體到抽象的過程。

3、迭代器是乙個行為類似指標的物件,在泛化過程中承擔重要的角色。

4、stl演算法在效率上的考慮甚為周詳,基本上可以算是效率最佳演算法,通過特定的資料結構來實現特定的演算法,做演算法分析時

可以看到其在時間複雜度和空間複雜度上表現很好。

三、演算法的一些細節

1、stl的所有關係型容器都擁有自動排序功能,所以不需要用到sort演算法,至於序列式容器中的stack、queue、priority queue

都有特定的出入口,不允許使用者對元素排序,剩下的vector、deque,迭代器屬於random access iterator,適合使用

sort演算法,而list的迭代器是雙向的,不適合使用sort演算法。

2、sort一定要求random access iterator,sort演算法在資料量大時採用quick sort,分段遞迴排序,一旦分段後的資料量小於

某個門檻,就改用insertion sort,如果遞迴層次過深,還會改用heap sort

3、copy是乙個常常被呼叫的函式,sgi stl的copy用盡各種辦法,包括函式過載、型別特性、偏特化等,無所不用其極的加強效率。

四、總結

1、再好的程式設計技巧,也無法讓乙個笨拙的演算法起死回生,選擇了錯誤的演算法,便注定了失敗的命運。

2、特定的演算法往往搭配特定的資料結構,所以掌握資料結構也是學好演算法的關鍵。

3、演算法是程式的靈魂,乙個好的演算法能夠幫助快速有效的解決問題,並且提供一些新的思路來進行專案開發。

STL 序列式容器細節

stl 序列式容器細節 一 概論 1 序列式容器 array build in c 內建 vector heap內含乙個vector priority queue內含乙個heap list slist deque stack內含乙個deque queue內含乙個deque 2 關聯式容器 rb tr...

STL演算法概述

除了容器類和迭代器,stl還提供了一些通用的演算法與容器類的元素工作。這些讓你做的事情,如搜尋,排序,插入,重新排序,刪除,複製元素的容器類。請注意,作為全球性的功能,操作使用迭代器演算法的實現。這意味著,每個演算法只需要實現一次,它一般會自動工作,提供了一組迭代器 包括自定義的容器類 的所有容器。...

stl演算法 next permutation剖析

在標準庫演算法中,next permutation應用在數列操作上比較廣泛.這個函式可以計算一組資料的全排列.但是怎麼用,原理如何,我做了簡單的剖析.首先檢視stl中相關資訊.函式原型 template boolnext permutation bidirectionaliterator first...