for_each(a,b,c); // a b 均为迭代器若从开始到结束就是 begin到end c 是一个函数对象或者回调函数
vector<int>::iterator it;
it=find_if(v1.begin(), v1.end(), Exp()); //find_if 返回一个迭代器
transform(v1.begin(), v1.end(), v2.begin(), v3.begin(), ADD<int>()); //匿名函数的二元函数对象
//transform 将运算结果的迭代器位置返回
transform(strRight.begin(), strRight.end(), strRight_.begin(), tolower); //tolower库中自带的函数对象
//利用二元谓词实现排序
sort(v1.begin(),v1.end(), funComplare);
//利用预定义函数对象实现排序 从大到小排序
sort(m_vec.begin(), m_vec.end(), greater<string>());
//equal_to<string>() 有两个参数,左参数来自于容器 右参数来自于sc
//函数适配器:将预定义函数对象与第二个参数进行绑定 bind2nd
string sc = "lhello";
//count_if 用来遍历容器并且返回某个元素出现的个数
//bind2nd就是一个函数适配器 将equal_to的左参数为容器,右参数是sc ,函数适配器就是将二者绑定
int num = count_if(m_vec.begin(), m_vec.end(), bind2nd(equal_to<string>(), sc));
//通过谓词判断大于2的个数 isGreater是一个类 里面封装了实现对于函数调用
int num_ = count_if(m_vec.begin(), m_vec.end(), isGreater(2)); //利用一元谓词的匿名函数实现
//通过预定义的函数对象判断大于2的个数
// greater<int>() 左参数来源于容器 右参数通过bind2nd绑定的固定元素2
int num_1 = count_if(m_vec.begin(), m_vec.end(), bind2nd(greater<int>(),2));
cout << "容器中大于2的个数是:" << num_1 << endl;
//通过预定义的函数对象判断奇数的个数
int num_2 = count_if(m_vec.begin(), m_vec.end(), bind2nd(modulus<int>(), 2));
cout << "容器中奇数的个数是:" << num_2 << endl;
//通过预定义的函数对象判断偶数的个数
// not1 () 取反函数
int num_3 = count_if(m_vec.begin(), m_vec.end(), not1(bind2nd(modulus<int>(), 2)));
cout << "容器中偶数的个数是:" << num_3 << endl;
equal_to<string>() 该函数对象 左参数为容器,右参数是sc
不断更新有关STL中的算法 20180330 1.1
最新推荐文章于 2024-10-08 10:22:24 发布