上海定制网站建设推广,keep的营销策略分析,seo诊断晨阳,asp.net 网站开发 实战提示#xff1a;写完文章后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 常用算法 前言算法列举#xff1a;算法例子 前言
还有一些我在尝试中迷惑不解的#xff0c;有点玄幻。 算法列举#xff1a;
排序算法#xff1a;
sort(first, last);…
提示写完文章后目录可以自动生成如何生成可参考右边的帮助文档 常用算法 前言算法列举算法例子 前言
还有一些我在尝试中迷惑不解的有点玄幻。 算法列举
排序算法
sort(first, last);
stable_sort(first, last);
partial_sort(first, middle, last);
partial_sort_copy(first, last, result_first, result_last);
nth_element (first, nth, last);
is_sorted (first, last);
is_sorted_until (first, last);合并算法
merge(first1,last1,first2,last2,result);
inplace_merge (first,middle,last);查找算法 find (first, last, val);find_if (first, last, pred);find_if_not (first, last, pred);find_end (first1, last1, first2, last2);find_first_of(first1, last1, first2, last2);adjacent_find(first, last);search(first1, last1, first2, last2);search_n(first, last, count, val);lower_bound (first, last,val);upper_bound (first, last,val);pairForwardIterator,ForwardIterator equal_range (first, last, val);binary_search(first, last,val);筛选分组算法
partition (first,last,pred);
stable_partition (first,last,pred);
pairOutputIterator1,OutputIterator2 partition_copy (first, last, result_true, result_false, pred);
partition_point(first,last,pred);其他
all_of (first,last,pred);
any_of (first,last,pred);
none_of(first,last,pred);
equal (First1, Last1, First2);
mismatch(First1, Last1, First2)
lexicographical_compare(first1, last1, first2, last2);
next_permutation(first, last);
prev_permutation(first, last)
is_permutation(First1, Last1, First2)
copy_n(firstn,result);
copy_if(first1,last,result,pred);
copy_backward(first1,last,result);
reverse_copy(first1,last,result);
unique(it_1,it_2,MyFunc);
rotate(first,middle,last);
rotate_copy(first,middle,last,last);
move();
swap_ranges(First1, Last1, First2)
remove(first1,last1,value);
remove_copy(first,last,result,value);
remove_if(first,last,result,value);
remove_copy_if(first,last,result,pred);
fill(first, last,val);
fill_n(first,n,value);
generate(first,last,gen);
generate_n(first,last,gen);transform(first1,last1,first1,result,binary_op)
replace(_First,_Last,_OldVal,_NewVal);
replace_if(_First,_Last,_Pred,_Val);
replace_copy(_First,_Last,_Result,_OldVal,_NewVal);
replace_copy_if_if(_First,_Last,_Result,_Pred,_Val);算法例子
vectorint vec{ 3, 2, 5, 4, 1, 6, 9, 7 };
vectorint vecCopy(5);
vectorint vecFirst{1,3,5,7};
vectorint vecSecond{ 2,4,6,8 };
vectorint vecMerge(8);
vectorint vecInplace{ 5,10,15,20,25,7,17,27,37,47,57 };
for (int i: vecInplace) {cout i;}//1. 排序
// Compare: lessint()、 greaterint()、[](int a,int b) {return ab;} 升序
// 默认升序//sort() 排序
sort(vec.begin(), vec.end());
sort(vec.begin(), vec.end(),lessint())//stable_sort() 还可以保证不改变相等元素的相对位置。//partial_sort() 从指定区域中提取出部分数据 对它们进行排序
partial_sort(vec.begin(), vec.begin() 4, vec.end());// 最小的 4 个元素移动到开头位置并排好序
partial_sort(vec.begin(), vec.begin() 4, vec.end(), [](int a, int b) {return a b; });//????不太懂//partial_sort_copy() 不对原有数据变动将部分元素拷贝到另外的数组或容器中然后再对这部分元素进行排序。
partial_sort_copy(vec.begin(),vec.end(),vec1.begin(),vecCopy.begin()5);//nth_element() 该函数可以从某个序列中找到第 n 小的元素 K并将 K 移动到序列中第 n 的位置处。
//整个序列经过 nth_element() 函数处理后所有位于 K 之前的元素都比 K 小所有位于 K 之后的元素都比 K 大。
nth_element(vec.begin(), vec.begin() 2, vec.end()); //? ? ? ? 不太懂//is_sorted()判断其是否已经排序好
bool flag is_sorted(vec.begin(), vec.end());//is_sorted_until() 不仅能检测出某个序列是否有序还会返回一个正向迭代器该迭代器指向的是当前序列中第一个破坏有序状态的元素。
vectorint::iterator demo is_sorted_until(vec.begin(),vec.end()); cout *demo;//2.合并
//merge()将两个有序集合合并为一个有序序列
merge(vecFirst.begin(),vecFirst.end(),vecSecond.begin(),vecSecond.end(), vecMerge.begin());//inplace_merge() 当 2 个有序序列存储在同一个数组或容器中时如果想将它们合并为 1 个有序序列 (我觉得有病直接一个排序不就得了真是折腾。)
inplace_merge(vecInplace.begin(), vecInplace.begin() 5, vecInplace.begin() 11);//3.查找
//find() 用于在指定范围内查找和目标元素值相等的第一个元素。
cout *find(vec.begin(),vec.end(),5);//find_if()、find_if_not() 符合规则不符合规则
cout *find_if(vec.begin(), vec.end(), [](int i) {return ((i % 2) 0); });//????不太懂//有点费力下次再来。//一元转换和二元转换 用于转换元素//vectorint vec1{ 3, 2, 5, 4, 1, 6, 9, 7 };//vectorint vec2{ 3, 2, 5, 4, 1, 6, 9, 7 };//vectorint vecTransform(8, 0);//transform(vec1.begin(), vec1.begin()5, vec2.begin(), [](int i) {return i 1; });//transform(vec1.begin(), vec1.end(), vec2.begin(), vecTransform.begin(), [](int a, int b) {return a b; });//for (int i : vecTransform) { couti; }//replace() 替换//vectorint vecRep1{ 3, 2, 5, 4, 1, 6, 9, 7 };//vectorint vecRep2(8);//replace(vecRep1.begin(),vecRep1.end(),1,100);//replace_copy(vecRep1.begin(), vecRep1.end(),vecRep2.begin(),1,100);//replace_if(vecRep1.begin(), vecRep1.end(), [](int i) {return i 3; },100 );//replace_copy_if(vecRep1.begin(), vecRep1.end(), vecRep2.begin(), [](int i) {return i 3; }, 100);//for (int i: vecRep2) { cout i; }// generate()、fill() 赋值//vectorint vecG(5);//int flag 1;//generate(vecG.begin(), vecG.end(), [flag]() {return flag; });//generate_n(vecG.begin(),3, [flag]() {return flag; });//fill(vecG.begin(), vecG.end(), 1);//fill_n(vecG.begin(),3, 1);//for (int i :vecG) { cout i; };// remove() 素覆盖它来实现移除的????大疑问//vectorint vecRe{1, 2, 3, 4,5};//vectorint vecRe2(5);//remove(vecRe.begin(),vecRe.end(),3); //12455 //remove_copy(vecRe.begin(),vecRe.end(), vecRe2.begin(),3); //12450 //remove_if(vecRe.begin(), vecRe.end(), [](int i) {return i 4; });//remove_copy_if(vecRe.begin(), vecRe.end(), vecRe2.begin(), [](int i) {return i 4; });//for (auto i : vecRe){cout i;}//for_each()循环vectorint vecFor{1, 2, 3, 4, 5};for_each(vecFor.begin(), vecFor.end(), [](int i) {cout i; });