码迷,mamicode.com
首页 > 编程语言 > 详细

c++中常用的泛型算法

时间:2018-11-08 19:14:02      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:分享   col   判断   集合   分享图片   alt   tps   inf   get   

    std中定义了很好几种顺序容器,它们自身也提供了一些操作,但是还有很多算法,容器本身没有提供。 而在algorithm头文件中,提供了许多算法,适用了大多数顺序容器。与c++11相比,很多函数在 c++17与c++20又改变了很多,下面内容基于c++11去简单介绍.

参考文献: https://en.cppreference.comhttps://zh.cppreference.com, 大家直接去这里看吧。。我就是拿的这里的!!!

 

    介绍之前,首先说明两点:

  • 关于泛型算法,必须明白一点:它们只会通过容器的迭代器来完成相关的操作,不会使用容器相关的任何操作。它意味着这些算法无论进行什么样的操作,容器的大小不会改变。
  • 泛型算法相关的函数中,经常需要传入谓词(predicate)参数。谓词指的是可调用的对象,返回bool类型,例如:函数名、函数指针、lambda函数、重载了operator()的类对象等。包含一个参数的谓词称为一元谓词(unary predicate), 包含两个参数的谓词称为二元谓词(binary predicate)。

 

1. 只遍历容器而不修改容器元素的算法:

a. 判断给定的容器是否满足给定条件

 

all_of(iter1_, iter2_, unaryPredicate_)         // 返回bool类型,如果容器内的所有元素, 对一元谓词为true,则返回true;
any_of(iter1_, iter2_, unaryPredicate_)         // 返回bool类型,如果容器任何一个元素, 对一元谓词为true,则返回true;
none_of(iter1_, iter2_, unaryPredicate_)       // 返回bool类型,如果容器内没有一个元素,对一元谓词为true,则返回true; (与all_of()正好相反)

b. 查找容器中满足条件的元素(如果不给定谓词参数,则会使用opretor==)
find(iter1_,iter2_, value)               // 返回迭代器,它指向第一个等于value的元素。
find_if(iter1_,iter2_, unary_predicate_)         // 返回迭代器,它指向第一个使一元谓词为true的元素。
find_if_not(iter1_, iter2_, unary_predicate_)      // 返回迭代器,它指向第一个使一元谓词为false的元素。
find_first_of(iter1, iter2, iter11, iter22, binaryPredicate_) // 返回迭代器, 在[iter1,iter2)中查找在[iter11,iter22)出现的任意一个元素, 返回第一个满足条件的元素的迭代器。
find_end(iter1, iter2, iter11, iter22, binaryPredicate_)  // 返回迭代器, 在 [iter1, iter2)中查找子序列[iter11, iter22), 返回满足条件的最后一个序列的起始元素。
fadjacent_find(iter1, iter2, binarayPredicate_)     // 返回迭代器, 在[iter1, iter2)中查找相邻的元素满足条件的;

c. 查找容器中满足条件元素的数目
cout(iter1, iter2, value)               // 返回满足条件的数目
cout_if(iter1, iter2, unaryPredidate_)          // 返回使一元谓词为true的数目

d. 对容器内的每一个元素执行相同的操作
for_each(iter1_, iter2_, unaryFunction_)       // 返回unaryFunction_, 该返回值对一般的函数或函数指针用处不大,对函数对象可能会有用;
                         // 作用:对指定范围内的所有元素依次执行一元函数操作.
for_each_n(iter1, n, unaryFunction_)         // 返回迭代器,指向n个元素的下一个元素, 功能类似.(在c++17中开始有)

 

从这里到最后的截图图片来自:https://zh.cppreference.com/w/cpp/algorithm, 发现这样有现成的,真的赖得写了啊。

 2. 修改序列的操作

 技术分享图片

 

3. 排序操作

技术分享图片

 

4. 二分搜索操作

技术分享图片

 

5.集合操作

技术分享图片

 

6. 最大最小操作

技术分享图片

 

另外,还有一些操作,不经常用,大家去推荐的网站看吧。

c++中常用的泛型算法

标签:分享   col   判断   集合   分享图片   alt   tps   inf   get   

原文地址:https://www.cnblogs.com/yinheyi/p/9924710.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!