find_if(),plus,for_each()的用法-创新互联
1、STL算法--find_if()
10年积累的做网站、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有共青城免费网站建设让你可以放心的选择与我们合作。(1)、代码如下:
#include#include #include #include using namespace std; template class IsDiv{ public: IsDiv(const Type &divisor){ this->divisor = divisor; } bool operator()(Type &t){ return t%divisor == 0; } protected: private: Type divisor; }; int main(void){ vector v2; for(int i = 10; i < 33; i++){ v2.push_back(i); } int a = 4; IsDiv myDiv(a); //find_if(v2.begin(), v2.end(), myDiv); vector ::iterator it; it =find_if(v2.begin(), v2.end(), IsDiv (a) ); if(it == v2.end()){ cout<<"容器中没有值是4的元素"< (2)、运行结果:
2、STL算法--plus的使用
(1)、代码如下:
#include#include #include #include using namespace std; //plus 预定义好的函数对象,能实现不同数据 + 算法; //实现了数据类型和算法的分离======》通过函数对象技术实现的; // //思考,怎么知道plus 是2个参数------>多看看源码; void main21(){ plus intAdd; int x = 10; int y = 20; int z = intAdd(x, y); cout<<"z:"< stringAdd; string s1 = "aaa"; string s2 = "bbb"; string s3 = stringAdd(s1, s2); cout<<"s3:"< v1; v1.push_back("bbb"); v1.push_back("aaa"); v1.push_back("ccc"); v1.push_back("zzz"); v1.push_back("ccc"); v1.push_back("ccc"); sort(v1.begin(), v1.end(), greater ()); //降序排列; vector ::iterator it; for(it = v1.begin(); it != v1.end(); it++){ cout<<*it< 有2个参数,left参数来自容器,right参数来自sc, //bind2nd就是函数适配器:把预定义函数对象和第二个参数进行绑定;` int num = count_if(v1.begin(), v1.end(), bind2nd(equal_to (), sc)); cout<<"num:"< (2)、运行结果:
3、STL算法--for_each()
(1)、代码如下:
#include#include #include #include using namespace std; void printV(vector &v){ vector ::iterator it; for(it = v.begin(); it != v.end(); it++){ cout<<*it<<" "; } cout< v1; v1.push_back(1); v1.push_back(3); v1.push_back(5); printV(v1); //第三个参数是:函数对象/回掉函数 //for_each(v1.begin(), v1.end(), showElem); //利用的是回调函数 for_each(v1.begin(), v1.end(), MyShow()); //利用的是函数对象(这个类中重载了()) //函数的返回值是函数对象 cout< (2)、运行结果:
4、for_each()和transform()的区别
(1)、代码如下:
#include#include #include #include using namespace std; void showElem(int &n){ cout< v1; v1.push_back(1); v1.push_back(3); v1.push_back(5); vector v2 = v1; for_each(v1.begin(), v1.end(), showElem); transform(v2.begin(), v2.end(), v2.begin(), showElem2);//transform对回调函数的要求;返回值必须有 cout< 运行结果:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章名称:find_if(),plus,for_each()的用法-创新互联
转载来源:http://ybzwz.com/article/eccse.html