C++STL
vvc223c
这个作者很懒,什么都没留下…
展开
-
C++ STL string字符串详解和使用方法
头文件<string>…操作…string操作的实参…构造函数和析构函数注意:你不能以一个单字符初始化某字符串,但是可以这样做: string a('a');//错误 string b(1, 'a');//正确 string c({ 'a' });//正确表示存在一个从const char* 到string的自动类型转换,但不存在一个从char到s...原创 2020-02-07 18:28:21 · 2514 阅读 · 0 评论 -
c++ stl 数值算法 将相对值转换成绝对值partial_sum使用方法
使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T&g...原创 2020-02-06 13:16:30 · 673 阅读 · 0 评论 -
c++ stl 数值算法 计算两数字的内积inner_product
使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T&g...原创 2020-02-06 13:05:17 · 658 阅读 · 0 评论 -
C++ STL 数值算法 对数列进行某种运算 accumulate使用方法
template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T>inl...原创 2020-02-06 12:54:11 · 222 阅读 · 0 评论 -
c++ stl 已排序区间算法 合并连贯之排序区间inplace_merge使用方法
template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T>inl...原创 2020-02-06 12:42:22 · 227 阅读 · 0 评论 -
c++ stl 已排序区间算法 两个已排序集合的差集set_difference、set_symmetric_difference使用方法
template<typename T>inline void PRINT_ELEMENTS(const T & coll, const string& optcstr = ""){ cout << optcstr; for (auto elem : coll) { cout << elem << ' '; } ...原创 2020-02-06 12:36:49 · 476 阅读 · 0 评论 -
c++ stl 已排序区间算法 两个已排序集合的交集set_intersection使用方法
template<typename T>inline void PRINT_ELEMENTS(const T & coll, const string& optcstr = ""){ cout << optcstr; for (auto elem : coll) { cout << elem << ' '; } c...原创 2020-02-05 14:56:14 · 368 阅读 · 0 评论 -
c++ stl 已排序区间算法 两个已排序集合的并集set_union使用方法
使用例子:template<typename T>inline void PRINT_ELEMENTS(const T & coll, const string& optcstr = ""){ cout << optcstr; for (auto elem : coll) { cout << elem << ' ';...原创 2020-02-05 14:53:12 · 399 阅读 · 0 评论 -
c++ stl 已排序区间算法 两个已排序集合的总和 merge使用方法
使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T&...原创 2020-02-05 14:43:47 · 207 阅读 · 0 评论 -
c++ stl 已排序区间算法 查找第一个和最后一个可能位置equal_range使用方法
使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T&g...原创 2020-02-05 14:20:46 · 403 阅读 · 1 评论 -
c++ stl 已排序区间算法 查找第一个或最后一个可能位置lower_bound、upper_bound使用方法
使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T&g...原创 2020-02-05 14:00:25 · 410 阅读 · 0 评论 -
c++ stl 已排序区间算法 检查数个元素是否存在includes使用方法
使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T&...原创 2020-02-05 12:49:44 · 210 阅读 · 0 评论 -
c++ stl 已排序区间算法 检查某个元素是否存在binary_search使用方法
使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); }}template<typename T&g...原创 2020-02-05 12:42:22 · 255 阅读 · 0 评论 -
c++ stl 堆算法 make_heap、push_heap、pop_heap、sort_heap使用方法
Heap可被视为一个以序列式集合实现而成的二叉树,具有两大性质:1.第一个元素总是最大或最小2.总是能够在对数时间内增加或移除一个元素为了处理heap,STL提供了4个算法:1.make_heap()将区间内的元素转化为heap.2.push_heap()对heap增加一个元素.3.pop_heap()对heap取出下一个元素.4.sort_heap()对heap转化为一个已排序群集...原创 2020-02-05 12:25:11 · 905 阅读 · 0 评论 -
c++ stl 排序算法 根据第n个元素排序 nth_element使用方法
使用例子:int main(){ deque<int>a; INSERT_ELEMENTS(a, 3, 7); INSERT_ELEMENTS(a, 2, 6); INSERT_ELEMENTS(a, 1, 5); PRINT_ELEMENTS(a); nth_element(a.begin(), a.begin() + 3, a.end()); cout...原创 2020-01-04 19:43:45 · 253 阅读 · 0 评论 -
c++ stl 排序算法 局部排序partial_sort、partial_sort_copy
使用例子:int main(){ deque<int>a; INSERT_ELEMENTS(a, 3, 7); INSERT_ELEMENTS(a, 2, 6); INSERT_ELEMENTS(a, 1, 5); PRINT_ELEMENTS(a); partial_sort(a.begin(), a.begin() + 5, a.end()); ...原创 2020-01-04 17:53:26 · 333 阅读 · 0 评论 -
C++ STL排序算法 对所有元素排序sort、stable_sort使用方法
注意:不可用对list或forward list调用这些算法,因为两者都不提供随机访问迭代器.不过你可以使用它们的成员函数sort()来进行排序sort()保证了很不错的平均效能nlogn使用例子:template<typename T>inline void INSERT_ELEMENTS(T& coll, int first, int last){ fo...原创 2020-01-04 16:59:24 · 309 阅读 · 0 评论 -
C++ STL变序型算法 划分两个子区间 partition_copy使用方法
以_Pred()为依据,拆分[beg,end)区间内的所有元素成为两个子区间.所有造成_Pred(elem)为true的元素被复制到_Dest_true开头的区间内.所有造成_Pred(elem)为false的元素被复制到_Dest_false开头的区间内.返回一个pair,其内是两个迭代器.分别指向_Dest_true和_Dest_false区间内之最末元素的下一位置.复杂度:线性,最多n...原创 2020-01-04 16:28:34 · 406 阅读 · 0 评论 -
C++ STL变序型算法 将元素往前搬partition、stable_partition使用方法
将[First, Last)区间中令_Pred(elem)为true的元素向前移动返回令_Pred为false的第一个元素位置.将[First, Last)区间中令_Pred(elem)为true的元素向前移动返回令_Pred为false的第一个元素位置.两者差别是:不管元素是否满足给定准则,stable_partition会保持它们之间的相对次序复杂度:partition():线性...原创 2020-01-03 18:00:57 · 308 阅读 · 0 评论 -
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 · 636 阅读 · 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 · 229 阅读 · 1 评论 -
C++ STL变序型算法 复制并同时旋转元素rotate_copy使用方法
是copy()和rotate()的组合将[First, Last)区间中的元素复制到以_Dest为起始的区间内,同时旋转元素,让_Mid成为新的第一元素返回目标区间内最后一个被复制元素的下一位置_Dest+调用者必须确保_Mid是[_First, _Last)区间内的一个有效位置,否则会引发不确定行为必须确保目标区间有足够空间,不然就得使用insert iterator复杂度:线性、执...原创 2019-12-27 17:15:28 · 253 阅读 · 0 评论 -
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 · 430 阅读 · 0 评论 -
C++ STL变序型算法 反转元素次序 reverse、reverse_copy使用方法
将[First, Last]区间中的元素全部反转次序将[First, Last]区间中的元素复制到以_Dest起始的目标区间,并在复制过程中颠倒次序reverse_copy返回目标区间中最后一个被复制元素的下一位置,也就是第一未被覆盖的元素调用者必须确保目标区间有足够空间,要不就得使用insertiteratorlist提供了一个性能更好的成员函数reverse,它并非重新赋值,而是重...原创 2019-12-27 16:44:43 · 663 阅读 · 0 评论 -
C++ STL移除型算法复制过程中移除重复元素unique_copy使用方法
将[First, Last]区间中的元素复制到_Dest为起点的目标区,并移除重复元素都返回目标区间中最后一个被复制元素的下一位置,也就是第一未被覆盖的元素调用者必须确保目标区间有足够空间,要不就得使用insertiterator复杂度:线性,执行比较动作或调用_Pred()numElems次使用例子:template<typename T>inline void PR...原创 2019-12-27 16:38:00 · 191 阅读 · 0 评论 -
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 · 398 阅读 · 0 评论 -
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 · 185 阅读 · 0 评论 -
C++ STL移除型算法 移除序列内的元素remove、remove_if
移除[First, Last]区间中每一个与Val相等的元素移除[First, Last]区间中每一个令_Pred(elem)结果为true的元素都返回被改动的序列的新逻辑终点这些算法会把原本置于后面的未移除元素向前移动,覆盖被移除元素由于元素会被改动,这些算法不能用于associative或unordered容器list提供了一个效果相同但性能更好的成员函数remove().复杂...原创 2019-12-27 15:14:14 · 355 阅读 · 0 评论 -
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 · 291 阅读 · 0 评论 -
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 · 253 阅读 · 0 评论 -
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 · 278 阅读 · 0 评论 -
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 · 205 阅读 · 0 评论 -
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 · 221 阅读 · 1 评论 -
C++ STL更易型算法互换元素swap_ranges使用方法
交换[First1, Last1]区间与[First2,…]区间的元素返回第二区间中最后一个被交换元素的下一位置调用者必须确保目标区间有足够空间两区间不得重叠如果要将相同类型的两个容器内的所有元素互换,应该使用swap()成员函数,因为该成员函数通常具备常量复杂度复杂度:线性,执行numElems次交换动作使用例子:int main(){ vector<int>a;...原创 2019-12-26 15:21:46 · 270 阅读 · 0 评论 -
C++ STL更易型算法 转换和结合元素transform使用方法
转换元素针对源区间[_First,_Last)中的每一个元素调用:_Func(elem)并将结果写到以_Dest起始的目标区间内.返回目标区间内最后一个被复制元素的下一个位置,也就是第一个未被覆盖的元素的位置调用者必须保证目标区间有足够空间,要不就得使用insert iterator复杂度:线性,执行numElems次调用下面是例子:template<typename T>...原创 2019-12-26 15:03:06 · 185 阅读 · 0 评论 -
C++ STL更易型算法 搬移元素move、move_backward使用方法
将[_First,_Last)区间内的元素全部搬移到以_Dest为起点的目标区间将[_First,_Last)区间内的元素全部搬移到以_Dest为终点的目标区间上面算法会针对每一个元素调用*destElem = std::move(*sourceElem);如果元素提供了move语义,源端元素从此不再明确,它们也就不该再被使用,除非重新初始化或被赋予新值.如果元素蕾西未提供move语义,...原创 2019-12-25 18:20:08 · 1581 阅读 · 0 评论 -
C++ STL更易型算法复制元素copy、copy_if、copy_n、copy_backward使用方法
将源区间[_First,_Last)中的所有元素复制到以_Dest为起点的目标区间,返回目标区间内最后一个被复制元素的下一个位置,也就是第一个未被覆盖的元素的位置.其中_Dest不可以处于[_First,_Last)区间将源区间[_First,_Last)中的所有元素复制到以_Dest为起点的目标区间,返回目标区间内最后一个被复制元素的下一个位置,也就是第一个未被覆盖的元素的位置,源区间和目...原创 2019-12-25 17:41:04 · 533 阅读 · 0 评论 -
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 · 400 阅读 · 0 评论 -
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 · 235 阅读 · 0 评论 -
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 · 166 阅读 · 0 评论