C++标准库中的
大多数
algorithm_name(container.begin(),container.end(),...);这里的container是一个容器对象,begin()和end()是容器的成员函数,返回指向容器开始和结束的迭代器。
函数:sort
定义:对容器中的元素进行排序。
语法:
sort(container.begin(),container.end(),compare_function);其中compare_function是一个可选的比较函数,用于自定义排序方式。
输出结果:
125569std::partial_sort:对部分区间排序,前n个元素为有序。
std::partial_sort(vec.begin(),vec.begin()+3,vec.end());std::stable_sort:稳定排序,保留相等元素的相对顺序。
std::stable_sort(vec.begin(),vec.end());2.搜索算法函数:find
定义:在容器中查找与给定值匹配的第一个元素。
autoit=find(container.begin(),container.end(),value);如果找到,it将指向匹配的元素;如果没有找到,it将等于container.end()。
Found:3std::binary_search:对有序区间进行二分查找。
std::sort(vec.begin(),vec.end());//先排序boolfound=std::binary_search(vec.begin(),vec.end(),4);std::find_if:查找第一个满足特定条件的元素。
autoit=std::find_if(vec.begin(),vec.end(),[](intx){returnx>3;});3.复制算法函数:copy
定义:将一个范围内的元素复制到另一个容器或数组。
copy(source_begin,source_end,destination_begin);实例:
123454.比较算法函数:equal
定义:比较两个容器或两个范围内的元素是否相等。
Vectorsareequal.5.修改算法std::reverse:反转区间内的元素顺序。
std::reverse(vec.begin(),vec.end());std::fill:将指定区间内的所有元素赋值为某个值。
std::fill(vec.begin(),vec.end(),0);//所有元素设为0std::replace:将区间内的某个值替换为另一个值。
std::replace(vec.begin(),vec.end(),1,99);//将所有1替换为99std::copy:将区间内的元素复制到另一个区间。
std::vector
std::vector std::prev_permutation(vec.begin(),vec.end());7.归并算法std::merge:将两个有序区间合并到一个有序区间。 std::vector std::inplace_merge(vec.begin(),middle,vec.end());8.集合算法std::set_union:计算两个有序集合的并集。 std::vector autoit=std::set_intersection(vec1.begin(),vec1.end(),vec2.begin(),vec2.end(),result.begin());result.resize(it-result.begin());std::set_difference:计算集合的差集。 autoit=std::set_difference(vec1.begin(),vec1.end(),vec2.begin(),vec2.end(),result.begin());result.resize(it-result.begin());9.其他有用算法std::accumulate(需要 #include std::for_each(vec.begin(),vec.end(),[](int&x){x+=1;});std::min_element和std::max_element:查找区间内的最小值和最大值。 automin_it=std::min_element(vec.begin(),vec.end());automax_it=std::max_element(vec.begin(),vec.end());