c++ STL 通用算法

本文详细介绍了C++ STL中的通用算法,包括非修改型算法、比较算法、修改性算法和排序及其相关算法。讲解了各种算法的功能和使用示例,如find(), find_if(), copy(), transform(), sort(), 以及迭代器的种类和使用方法。" 4475509,608198,HSR算法深入解析:Occlusion Culling技术,"['算法', '图形学', '游戏开发', '引擎', '计算机视觉']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.algorithm

/*STL泛型算法
 * 1.非修改型算法
 * for_each()
 *      第三个参数可以是普通一元函数,也可以是仿函数
 * count(), count_if 
 *      int count(iterator begin, iterator end, const T& value);//统计某个元素
 *      int count_if(iterator begin, iterator end, UnaryPredicate op);//统计op条件为真的元素个数
 * min_element(), max_element()
 *      //如果有多个最值,只返回第一个找到的迭代器
 *      iterator min_element(iterator begin, iterator end);//以<进行比较
 *      iterator min_element(iterator begin, iterator end, compFunc op);//以op进行比较
 * find(), find_if()
 *      //搜索第一个匹配的元素的迭代器
 *      iterator find (iterator begin, iterator end, const& T value);
 *      iterator find_if (iterator begin, iterator end, UnaryPredicate op);
 * search_n(), search, find_end(), find_first_of()
 *      //搜索第一组,n个连续匹配的值都匹配,返回第一个元素的迭代器,失败返回end()
 *      iterator search_n (iterator begin, iterator end, size_t n, const T& value);
 *      iterator search_n (iterator begin, iterator end, size_t n, const T& value, BinaryPredicate op);
 *      //搜索第一个匹配的子区间
 *      iterator search(iterator begin, iterator end, iterator sbegin, iterator send);
 *      iterator search(iterator begin, iterator end, iterator sbegin, iterator send, BinaryPredicate op);
 *      //搜索最后一个匹配的子区间
 *      iterator find_end(iterator begin, iterator end, iterator sbegin, iterator send);
 *      iterator find_end(iterator begin, iterator end, iterator sbegin, iterator send,BinaryPredicate op);         
 * adjacent_find()
 *      //搜索两个连续相等的元素, T E 通常用迭代器
 *      template <class T>
 *              T adjacent_find(T first, T last);
 *      template <class T, class E>
 *              T adjacent_find(T first, T last, E pr);//pr是一个二元判断如void pr(int i, int j);
 * 2.比较算法
 *  equal(), mismatch(), lexicographical_compare()
 *      bool equal(iterator start, iterator end, iterator comp_start);//比较两组迭代器内容是否相等,第二组只要给出起始位置,只比较到和第一组一样长的位置
 *      bool equal(iterator start, iterator end, iterator comp_start, Pred pr);//用自定义二元规则pr进行比较
 *      template<class T, class E> 
 *              pair<T, E> mismatch(T first, T last, E compare_first); //一般都是迭代器T,E, 从头开始找不同的元素的位置
 *      tempolate<class T, class E> 
 *              pair<T, E> mismatch(T first, T last, E comapre_first, Pred pr);
 *      bool lexicographical_compare(T first, T last, E first2, E last2);//字典式比较,第一组小于第二组则返回true
 *      bool lexicographical_compare(T first, T last, E first2, E last2, Pred pr);
 * 3.修改性算法
 * 注意:set, map类不可以用。它们只能使用自己的成员函数
 * 3.1 复制
 * copy(), copy_backward()
 *      iterator copy(iterator first, itreator last, iterator begin);//把first到last的元素正向复制到begin开始,覆盖,目标区间需要足够空间
 *      iterator copy_backward(iterator first, iterator last, iterator end);//把区间[first, last)从后向前复制到end结束
 * 3.2 转换
 * transform(),
 *      iterator transform(iterator first, iterator last, iterator begin, Unop op);//对[first, end)区间的每个元素调用op(ele)函数,写入begin开始的目标区间
 *      iterator transform(iterator first1, iterator last, iterator first2, iterator begin, Binop bop);//对区间[first, end)和对应的[first,)元素,调用二元函数bop(ele1, ele2),运算后写入[begin,)
 * 3.3 互换
 * swap()
 * 3.4 赋值
 * fill(), fill_n(), generate(), generate_n()
 *      void fill(iterator first, iterator last, const T& x);//对区间[first, last)赋x
 *      void fill_n(iterator begin, size_t n, const T& x);//对[begin, begin+n)赋x
 *      void generate(iterator first, iterator last, Gen g);//用子进程或仿函数对区间赋值
 *      void generate_n(iterator begin, size_t n, Gen g);
 * 3.5 替换
 * replace(), replace_if()
 *      void replace(iterator first, iterator last, const T& old, const T& new);//在区间把old替换成new
 *      void replace_if(iterator first, iterator last, Pred pr, const T& new);//在区间把满足一元判断的替换成ne

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值