自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 C++ STL变序型算法 对元素重新洗牌 shuffle、random_shuffle使用方法

将[First, Last)区间中的元素次序打乱重新洗牌,使用你给定的随机数引擎_Func使用一个均匀分布随机数产生器打乱[First, Last)区间内的元素次序使用_RngFunc打乱[First, Last)区间内的元素次序.算法内部使用一个整数值来调用_RngFunc(max),返回一个大于0,小于max的随机数,不包括max本身复杂度:线性,执行numElems-1次交换使...

2019-12-27 19:29:31 619 1

原创 C++ STL变序型算法 排列元素next_permutation、prev_permutation使用方法

改变[First, Last)区间中的元素次序,使它们符合下一排列次序,使用operator<比较元素改变[First, Last)区间中的元素次序,使它们符合下一排列次序,使用_Pred(elem1,elem2)比较元素,如果elem1<elem2应该返回true改变[First, Last)区间中的元素次序,使它们符合上一排列次序,使用operator<比较元素...

2019-12-27 17:56:54 213 1

原创 C++ STL变序型算法 复制并同时旋转元素rotate_copy使用方法

是copy()和rotate()的组合将[First, Last)区间中的元素复制到以_Dest为起始的区间内,同时旋转元素,让_Mid成为新的第一元素返回目标区间内最后一个被复制元素的下一位置_Dest+调用者必须确保_Mid是[_First, _Last)区间内的一个有效位置,否则会引发不确定行为必须确保目标区间有足够空间,不然就得使用insert iterator复杂度:线性、执...

2019-12-27 17:15:28 246

原创 C++ STL变序型算法 旋转元素rotate 使用方法

将[First, Last]区间中的元素旋转,旋转后_Mid成为新的第一元素复杂度:线性,字最多进行numElems次交换使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i)...

2019-12-27 17:06:39 415

原创 C++ STL变序型算法 反转元素次序 reverse、reverse_copy使用方法

将[First, Last]区间中的元素全部反转次序将[First, Last]区间中的元素复制到以_Dest起始的目标区间,并在复制过程中颠倒次序reverse_copy返回目标区间中最后一个被复制元素的下一位置,也就是第一未被覆盖的元素调用者必须确保目标区间有足够空间,要不就得使用insertiteratorlist提供了一个性能更好的成员函数reverse,它并非重新赋值,而是重...

2019-12-27 16:44:43 647

原创 C++ STL移除型算法复制过程中移除重复元素unique_copy使用方法

将[First, Last]区间中的元素复制到_Dest为起点的目标区,并移除重复元素都返回目标区间中最后一个被复制元素的下一位置,也就是第一未被覆盖的元素调用者必须确保目标区间有足够空间,要不就得使用insertiterator复杂度:线性,执行比较动作或调用_Pred()numElems次使用例子:template<typename T>inline void PR...

2019-12-27 16:38:00 181

原创 C++ STL移除型算法 移除连续重复元素unique使用方法

由于元素会被改动,这些算法不能用于associative或unordered容器复杂度:线性,执行比较动作或调用_Pred()numElems次这两个算法将原本位置在后的未移除元素向前移动,覆盖掉被移除元素使用方法:template<typename T>inline void PRINT_ELEMENTS(const T & coll, const strin...

2019-12-27 16:03:47 388

原创 C++ STL移除型算法 复制时一并移除元素remove_copy、remove_copy_if

将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中与_oldval相等的所有元素移除将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中造成_Pred(elem)结果为true的所有元素移除都返回目标区间中最后一个被复制元素的下一位置复杂度:线性,执行比较动作或调用_Pred()numElems次使用例子:template...

2019-12-27 15:34:28 177

原创 C++ STL移除型算法 移除序列内的元素remove、remove_if

移除[First, Last]区间中每一个与Val相等的元素移除[First, Last]区间中每一个令_Pred(elem)结果为true的元素都返回被改动的序列的新逻辑终点这些算法会把原本置于后面的未移除元素向前移动,覆盖被移除元素由于元素会被改动,这些算法不能用于associative或unordered容器list提供了一个效果相同但性能更好的成员函数remove().复杂...

2019-12-27 15:14:14 342

原创 C++ STL更易型算法 复制并替换元素replace_copy、replace_copy_if使用方法

将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中与_oldval相等的所有元素替换为_Newval将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中令_Pred(elem)结果为true的所有元素替换为_Val都返回目标区间中最后一个被复制元素的下一个位置复杂度:线性,执行比较动作numElems次使用例子:templ...

2019-12-27 14:54:36 284

原创 C++ STL更易型算法 替换序列内的元素replace、replace_if使用方法

将[First, Last]区间内的每一个与_oldval相等的元素替换为_Newval将[First, Last]区间内的每一个令_Pred(elem)为true的元素替换为val复杂度:线性使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ ...

2019-12-26 19:26:48 247

原创 C++ STL更易型算法赋予一系列递增值iota使用方法

依序赋值_val、_val+1…复杂度:线性头文件<numeric>使用例子:template<typename T>inline void PRINT_ELEMENTS(const T & coll, const string& optcstr = ""){ cout << optcstr; for (auto elem : ...

2019-12-26 17:41:44 263

原创 C++ STL更易型算法赋予新生值generate、generate_n使用方法

将[First, Last]替换为Func()产出的新值将[First, Last]前_Count_raw个元素替换为Func()产出的新值调用者必须确保目标区间有足够空间,要不就得使用insertiterator复杂度:线性使用例子:template<typename T>inline void PRINT_ELEMENTS(const T & coll, c...

2019-12-26 17:18:40 198

原创 C++ STL更易型算法赋予相同数值fill、fill_n使用方法

复制Val到[First, Last]从_Dest开始的前_Count_raw个元素赋值新值为val.调用者必须确保目标区间有足够空间,要不就得使用insertiterator复杂度:线性使用例子:template<typename T>inline void PRINT_ELEMENTS(const T & coll, const string& op...

2019-12-26 15:55:47 212 1

原创 C++ STL更易型算法互换元素swap_ranges使用方法

交换[First1, Last1]区间与[First2,…]区间的元素返回第二区间中最后一个被交换元素的下一位置调用者必须确保目标区间有足够空间两区间不得重叠如果要将相同类型的两个容器内的所有元素互换,应该使用swap()成员函数,因为该成员函数通常具备常量复杂度复杂度:线性,执行numElems次交换动作使用例子:int main(){ vector<int>a;...

2019-12-26 15:21:46 263

原创 C++ STL更易型算法 转换和结合元素transform使用方法

转换元素针对源区间[_First,_Last)中的每一个元素调用:_Func(elem)并将结果写到以_Dest起始的目标区间内.返回目标区间内最后一个被复制元素的下一个位置,也就是第一个未被覆盖的元素的位置调用者必须保证目标区间有足够空间,要不就得使用insert iterator复杂度:线性,执行numElems次调用下面是例子:template<typename T&gt...

2019-12-26 15:03:06 181

原创 C++ STL更易型算法 搬移元素move、move_backward使用方法

将[_First,_Last)区间内的元素全部搬移到以_Dest为起点的目标区间将[_First,_Last)区间内的元素全部搬移到以_Dest为终点的目标区间上面算法会针对每一个元素调用*destElem = std::move(*sourceElem);如果元素提供了move语义,源端元素从此不再明确,它们也就不该再被使用,除非重新初始化或被赋予新值.如果元素蕾西未提供move语义,...

2019-12-25 18:20:08 1568

原创 C++ STL更易型算法复制元素copy、copy_if、copy_n、copy_backward使用方法

将源区间[_First,_Last)中的所有元素复制到以_Dest为起点的目标区间,返回目标区间内最后一个被复制元素的下一个位置,也就是第一个未被覆盖的元素的位置.其中_Dest不可以处于[_First,_Last)区间将源区间[_First,_Last)中的所有元素复制到以_Dest为起点的目标区间,返回目标区间内最后一个被复制元素的下一个位置,也就是第一个未被覆盖的元素的位置,源区间和目...

2019-12-25 17:41:04 515

原创 C++ STL非更易型算法 检验All、Any、None all_of、any_of、none_of的使用方法

判断[_First,_Last)区间内的元素是否全部造成_Pred(elem)为true判断[_First,_Last)区间内的元素是否至少一个造成_Pred(elem)为true判断[_First,_Last)区间内的元素是否没有任何元素造成_Pred(elem)为true如果区间为空,all_of()和none_of()返回true,any_of()返回false复杂度:线性使用...

2019-12-25 17:14:22 389

原创 C++ STL非更易型算法 检验是否形成Heap(最大值元素在第一位)is_heap、is_heap_until

判断[_First,_Last)区间内的元素是否形成一个heap,意味着beg是最大值元素之一.使用operator<比较元素判断[_First,_Last)区间内的元素是否形成一个heap,意味着beg是最大值元素之一.使用_Pred(elem1, elem2)完成比较,在elem1 < elem2的情况下返回true.返回[_First,_Last)区间内中的第一个破坏排...

2019-12-25 16:07:54 229

原创 C++ STL非更易型算法 检验是否被分割is_partitioned partition_point使用方法

判断[_First,_Last)区间内的元素是否被分割,也就是所有符合_Pred()的元素都被置于所有不符合的元素之前返回[_First,_Last)区间内中的第一个元素的位置,使用_Pred(elem1,elem2),在elem1小于elem2时返回true.复杂度:is_partitioned():线性partition_point():如果收到的是随机访问迭代器则为对数,否则为线性...

2019-12-25 15:50:52 159

原创 C++ STL非更易型算法 检验是否排序is_sorted、is_sorted_until使用方法

检验[_First,_Last)区间内的元素是否已经排序,使用operator<比较元素检验[_First,_Last)区间内的元素是否已经排序,使用_Pred(elem1,elem2)比较元素,如果elem1小于elem2返回true检验[_First,_Last)区间内第一个破坏排序的元素,如果没有这样的元素返回end,使用operator<比较元素检验[_First...

2019-12-25 15:41:54 347

原创 C++ STL非更易型算法 检验小于 lexicographical_compare使用方法

判断[_First,_Last)区间内的元素是否小于[_First2,_Last2)的元素.所谓的小于是指就字典次序意义而言,以operator<比较元素判断[_First,_Last)区间内的元素是否小于[_First2,_Last2)的元素.所谓的小于是指就字典次序意义而言,以_Pred(elem1,elem2)比较元素,如果elem1小于elem2,应当返回true所谓字典次序...

2019-12-25 15:23:41 251

原创 C++ STL非更易型算法 查找第一处不同mismatch使用方法

检查[_First,_Last)区间和以_First2起始的区间内第一组两两相异的对应元素检查[_First,_Last)区间和以_First2起始的区间内第一组造成_Pred(elem,_First2Elem)为false的对应婴元素如果没有找到就返回以end和第二序列对应的元素组成的pair<>如果想知道两个序列是否相等,使用equal()算法复杂度:线性,最多比较nu...

2019-12-25 14:42:26 223

原创 C++ STL非更易型算法 测试不定序之相等性is_permutation使用方法

检查[_First,_Last)区间内的元素是否为_First2起始之区间元素的一个排列组合,以operator ==比较元素检查[_First,_Last)区间内的元素是否为_First2起始之区间元素的一个排列组合,以_Pred(elem1, elem2)比较元素,应该在elem1等于elem2时返回true所有iterator必须有相同的value type复杂度:最糟糕情况下是二...

2019-12-25 14:24:34 122

原创 C++ STL非更易型算法 检验相等性equal使用方法

返回[_First,_Last)区间内的元素是否都和以_First2开头的区间内的元素相等返回[_First,_Last)区间内的元素和以_First2开头的区间内的对应元素是否都能够造成_Pred(elem,_First2)为true如果没有找到匹配元素,返回end复杂度:线性,最多比较numElems次template<typename T>inline void ...

2019-12-24 18:03:02 222

原创 C++ STL非更易型算法 查找两个连续且相等的元素adjacent_find

返回[_First,_Last)区间内第一对连续两个相等元素中的第一元素位置返回[_First,_Last)区间内第一对连续两个元素均造成_Pred(elem,nextElem)结果为true的第一元素位置.如果没有找到匹配元素,返回end复杂度:线性,最多比较numElems次使用例子:template<typename T>inline void PRINT_ELEM...

2019-12-24 17:41:33 216

原创 C++ STL非更易型算法 查找某些元素的第一次出现地点find_first_of使用方法

返回既出现于[_First,_Last)区间又出现于[_First2,_Last2)区间的元素的位置返回出现于[_First,_Last)区间内第一个满足以下条件的元素:它和区间[_First2,_Last2)内每一个元素进行_Pred(elem,searchElem)动作的结果都是true如果没有找到匹配元素,返回end可以使用反向迭代器查找最后一个符合条件的元素复杂度:线性 ,最多...

2019-12-24 16:50:13 312

原创 C++ STL非更易型算法 查找最后一个子区间find_end使用方法

返回区间 [_First, _Last)中和区间[_First2, _Last2)完全匹配的最后一个子区间内的第一元素位置,子区间的元素必须完全等于[_First2, _Last2)的元素返回区间 [_First, _Last)中和区间[_First2, _Last2)完全匹配的最后一个子区间内的第一元素位置,子区间的元素和[_First2, _Last2)的对应元素必须造成_Pred(el...

2019-12-24 16:20:53 423

原创 C++ STL非更易型算法 查找第一个子区间search使用方法

返回[_First,_Last)区间内与[_First2,_Last2)区间完全吻合的第一个子区间内的第一元素位置,子区间内的元素必须完全等于[_First2,_Last2)的元素返回[_First,_Last)区间内与[_First2,_Last2)区间完全吻合的第一个子区间内的第一元素位置,子区间内的元素必须造成_Pred(elem,searchElem)结果为true.如果没有找到匹...

2019-12-24 16:12:45 167

原创 C++ STL非更易型算法查找前n个连续匹配值 search_n 使用方法

查找前n个连续匹配值返回[_First,_Last)区间内连续_Count_raw个元素造成_Pred(elem,val)为true的第一元素位置返回[_First,_Last)区间内连续_Count个元素值都等于value中的第一元素位置如果没有找到匹配元素,返回end复杂度:线性 最多比较numElems x count 次使用例子:template<typename T...

2019-12-24 15:22:40 157

原创 C++ STL非更易型算法查找元素 find、find_if、find_if_not使用方法

返回[_First,_Last)区间中第一个元素值等于val的元素位置返回[_First,_Last)区间中第一个造成_Pred(elem)为true的元素返回[_First,_Last)区间中第一个造成_Pred(elem)为false的元素如果没有找到,都返回end如果是已排序区间,应该使用lower_bound()、upper_bound()、equal_range()算法获得...

2019-12-24 15:13:13 244

原创 C++ STL非更易型算法min_element、max_element、minmax_element使用方法

最小值和最大值这些算法分别返回[_First,_Last)区间中的最小元素位置、最大元素位置.或最小和最大元素位置所组成的pair上述没有_Pred实参的各个版本将以operator<进行元素比较_Pred用来比较两个元素,_Pred(elem1,elem2)如果第一元素小于第二元素,应当返回true如果存在多个最小值或最大值,min_element()和max_el...

2019-12-24 14:55:26 775

原创 C++ STL非更易型算法 Count、Count_if使用方法

元素计数count: 计算区间[_First,_Last)中元素值等于value的元素个数count_if:计算区间[_First,_Last)中令_Pred(elem)为true的元素个数复杂度:线性

2019-12-24 14:53:36 284

原创 C++ STL for_each()算法

1.对区间[_First,_Last)中的每一个元素调用:2._Func可以改动元素.3. _Func任何返回值都会被忽略4. 复杂度:线性下面是个例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i &lt...

2019-12-22 18:18:24 762

原创 C++ STL算法

头文件<algorithm>、<numeric>、<functional>某些算法需要数值处理,因此需要<numeric>,使用STL算法时,常常用到函数对象和函数适配器,因此需要<functional>算法概述两个特殊后缀:1.后缀_if2.后缀_copy按照功能来分类:1.非更易型算法2.更易型算法3.移除型算法4...

2019-12-22 16:37:51 247

原创 C++ STL Lambda

Lambda vs Binderint main(){ auto plus10 = [](int i) {return i + 10; }; cout << "+10: " << plus10(7) << endl; auto plus10times2 = [](int i) {return (i + 10) * 2; }; cout <&lt...

2019-12-22 15:21:49 198

原创 C++ STL 预定义的function object和Binder

头文件<functional>预定义的function object对对象排序或比较时,默认以less<>为比较准则,因此默认的排序操作总是产生升序.……Function Adapter和Binder所谓的Function adapter(函数适配器,函数改造器),指能够讲不通的函数对象结合起来的东西,它自身也是一个函数对象.C++11引入了更方便更弹性的a...

2019-12-22 14:22:42 221

原创 C++ STL Function Object函数对象

概念指定义了operator()的对象,如:FunctionObjectType fo;...fo(...);其中的fo();是调用了fo对象的operator(),而不是调用函数fo()可以将函数对象视为一般函数,只不过是一种更复杂的撰写手段,比如:class FunctionObject{public: void operator() () { statements...

2019-12-22 13:54:18 370

原创 C++ STL Unordered Container无序容器

头文件:<unordered_set>、<unordered_map>Unordered容器的能力所有标准化无序容器类都以哈希表为基础.关于再散列,有两种实现策略:1.传统做法:在单一insert或erase动作出现时,有时候会发生一次内部数据重新组织2.递进式做法是:渐进改变bucket或slot数量对于每个将被存放的元素,哈希函数会把key映射至哈希表内...

2019-12-20 17:01:12 378

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除