不断更新有关STL中的算法 20180330 1.1


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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值