stl源码剖析 详细学习笔记 算法总览

//****************************基本算法*****************************

/*

stl算法总览,不在stl标准规格的sgi专属算法,都以 *加以标记

算法名称             
算法用途         质变                  
所在文件

accumulate          元素累计           
否                   <stl_numeric.h>

adjacent_difference 相邻元素的差额      
是 if in-place       <stl_numeric.h>

adjacent_find       查找相邻而重复      
否                   <stl_algo.h>

(或符合某条件)的元素

binary_search       二分查找           
否                   <stl_algo.h>

Copy                复制              
是 if in-place       <stl_algobase.h>

Copy_backward      逆向复制            
是 if in-place       <stl_algobase.h>

Copy_n *            复制n个元素        
是 if in-place       <stl_algobase.h>

count               计数              
否                   <stl_algo.h>

count_if            在特定条件下计数    
否                   <stl_algo.h>

equal            判断两个区间是否相等    
否                   <stl_algobase.h>

equal_range      试图在有序区间中寻找

某值(返回一个上下限区间) 
否                    <stl_algo.h>

fill                改填元素值         
是                    <stl_algobase.h>

fill_n              改填元素值,n次     
是                    <stl_algobase.h>

find                循序查找           
否                   <stl_algo.h>

find_if         循序查找符合特定条件者   
否                    <stl_algo.h>

find_end        查找某个子序列的最后     
否                   <stl_algo.h>

一次出现点

find_first_of   查找某些元素的首次出现点  
否                   <stl_algo.h>

for_each        对区间内的每一个元素施行  
否                   <stl_algo.h>

某操作

generate        以特定操作之运算结果     
是                   <stl_algo.h>

填充特定区间内的元素

generate_n      以特定操作之运算结果     
是                   <stl_algo.h>

填充n个元素

includes        是否涵盖于某序列之中     
否                   <stl_algo.h>

inner_product       内积              
否                   <stl_numeric.h>

inplace_merge   合并并就地替换(复写上去) 
是                   <stl_algo.h>

iota *          在某区间填入某指定值的   
是                   <stl_numeric.h>

递增序列

is_heap *       判断某区间是否为一个heap 
否                   <stl_algo.h>

is_sorted *     判断某区间是否已排序     
否                   <stl_algo.h>

iter_swap           元素互换           
是                   <stl_algobase.h>

lexicograpghical_  以字典顺序进行比较    
否                  <stl_numeric.h>

compare

lower_bound     将指定元素插入区间之内    
否                   <stl_algo.h>

而不影响区间之原本排序的最低位置

max                 最大值             
否                   <stl_algobase.h>

max_element       最大值所在位置        
否                    <stl_algo.h>

merge               合并两个序列        
是 if in-place        <stl_algo.h>

min                 最小值             
否                    <stl_algobase.h>

min_element       最小值所在位置        
否                    <stl_algo.h>

mismatch            找出不匹配点        
否                    <stl_algobase.h>

next_permutation    获得下一个排列组合   
是                    <stl_algo.h>

nth_element     重新安排序列中的第n个    
是                    <stl_algo.h>

元素的左右两端

partial_sort        局部排序           
是                    <stl_algo.h>

partial_sort_copy  局部排序并复制到他处  
是 if in-place        <stl_algo.h>

partial_sum         局部求和           
是 if in-place        <stl_numeric.h>

partition           分割              
是                    <stl_algo.h>

prev_permutation    获得前一个排列组合  
是                     <stl_algo.h>

power *             幂次方。表达式可指定 
否                    <stl_numeric.h>

random_suffle       随即重排元素        
是                    <stl_algo.h>

random_sample *     随即取样           
是 if in-place        <stl_algo.h>

random_sample_n *   随即取样           
是 if in-place        <stl_algo.h>

remove           删除某类元素(但不删除)  
是                    <stl_algo.h>

remove_copy      删除某类元素并将结果    
是                    <stl_algo.h>

复制到另一个容器

remove_if          有条件地删除某类元素  
是                    <stl_algo.h>

remove_copy_if   有条件地删除某类元素并将 
是                    <stl_algo.h>

结果复制到另一个容器

replace             替换某类元素        
是                    <stl_algo.h>

replace_copy     替换某类元素,并将结果   
是                    <stl_algo.h>

复制到另一个容器

replace_if          有条件地替换        
是                    <stl_algo.h>

replace_copy_if  有条件地替换,并将结果   
是                    <stl_algo.h>

复制到另一个容器

reverse              反转元素次序       
是                    <stl_algo.h>

reverse_copy     反转元素次序并将结果     
是                   <stl_algo.h>

复制到另一个容器

rotate                  旋转           
是                    <stl_algo.h>

rotate_copy       旋转,并将结果复制到    
是                    <stl_algo.h>

另一个容器

search              查找某个子序列       
否                    <stl_algo.h>

search_n         查找连续发生n次的子序列  
否                    <stl_algo.h>

set_difference       差集              
是 if in-place        <stl_algo.h>

set_intersection     交集              
是 if in-place        <stl_algo.h>

set_symmetric_      对称差集            
是 if in-place        <stl_algo.h>

difference

set_union            并集              
是 if in-place        <stl_algo.h>

sort                 排序              
是                    <stl_algo.h>

stable_partition 分割并保持元素的相对次序  
是                    <stl_algo.h>

stable_sort      排序并保持等值元素的     
是                    <stl_algo.h>

相对次序

swap               交换(对调)           
是                    <stl_algobase.h>

swap_ranges         交换(指定区间)       
是                    <stl_algo.h>

transform         以两个序列为基础,交互   
是                    <stl_algo.h>

作用产生第三个序列

unique            将重复的元素折叠缩编,   
是                    <stl_algo.h>

使成唯一

unique_copy       将重复的元素折叠缩编,   
是 if in-place        <stl_algo.h>

使成唯一,并复制到他处

upper_bound      将指定元素插入区间之内    
否                    <stl_algo.h>

而不影响区间之原本排序

的最高位置

make_heap           制造一个heap        
是                    <stl_heap.h>

pop_heap           从heap取出一个元素    
是                    <stl_heap.h>

push_heap          将元素推进heap内      
是                    <stl_heap.h>

sort_heap           对heap排序          
是                    <stl_heap.h>

*/

时间: 2024-10-11 22:55:49

stl源码剖析 详细学习笔记 算法总览的相关文章

stl源码剖析 详细学习笔记 算法(1)

//---------------------------15/03/27---------------------------- //算法 { /* 质变算法:会改变操作对象之值 所有的stl算法都作用在由迭代器[first,last)所标示出来的区间上.质变算法 就是 运算过程会更改区间内的元素内容 非质变算法:和质变算法相反 */ /* stl算法的一般形式 1>所有的泛型算法的前两个参数都是一对迭代器,通常称为first和last,用以标示算法的操作区间 2>stl习惯采用前闭后开区间

stl源码剖析 详细学习笔记 算法(2)

//---------------------------15/03/29---------------------------- //****************************set相关算法***************************** /* 1>set相关算法一共有4种:并集(union),交集(intersection),差集(difference), 对称差集(symmetric difference). 2>set相关算法只接受set/multiset. 3

stl源码剖析 详细学习笔记 算法(4)

//---------------------------15/03/31---------------------------- //lower_bound(要求有序) template<class ForwardIterator, class T> inline ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& value) { return __lower_bound

stl源码剖析 详细学习笔记 算法(5)

//---------------------------15/04/01---------------------------- //inplace_merge(要求有序) template<class BidirectionalIterator> inline void inplace_merge(BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last) { if(first

stl源码剖析 详细学习笔记 算法(3)

//---------------------------15/03/30---------------------------- //min_element template<class ForwardIterator> ForwardIterator min_element(ForwardIterator first, ForwardIterator last) { if(first == last) return first; ForwardIterator result = first

stl源码剖析 详细学习笔记 空间配置器

//---------------------------15/04/05---------------------------- /* 空间配置器概述: 1:new操作包含两个阶段操作 1>调用::operator new配置内存(底层使用malloc来申请内存). 2>调用函数的构造函数,构造对象内容. delte和new一样,先调用析构函数,再调用::operator delete释放内存. 2:为了效率,stl把两个阶段分开来. 1>内存配置操作: alloc::allocate

stl源码剖析 详细学习笔记 仿函数

//---------------------------15/04/01---------------------------- //仿函数是为了算法而诞生的,可以作为算法的一个参数,来自定义各种操作,比如比大小,返回bool值,对元素进行操作等 //虽然这些函数也能实现,但是如果配合配接器(adapter)可以产生更灵活的变化. //为了使对象像函数一样,就必须重载operator() //unary_function template<class Arg, class Result> s

stl源码剖析 详细学习笔记 配接器

//---------------------------15/04/03---------------------------- /* 配接器概述: 1:adapter是一种设计模式:将一个class的接口转换为另一个class的接口,使得原本因接口不兼容而 不能合作的classes可以一起工作. 2:改变仿函数接口的,称为function adapter,改变容器接口的,称为container adapter, 改变迭代器接口的,称为iterator adapter. 3:container

《STL源码剖析》学习笔记-第6章(一) set相关算法

STL中定义的set要求元素不得重复且已经排序.而set算法要求的都是有序区间(输出也是有序的),但元素可以重复出现. STL提供了4个set相关的算法,分别是并集(union).交集(intersection).差集(difference)和对称差集(symmetric difference),这4个算法接受的set必须是有序区间,都至少接受4个参数,分别表示两个set区间.一般而言,set算法前4个参数分别表示两个区间,第五个参数表示存放结果的区间的起始位置. 1.set_union 求两个