boost之算法

STL里的算法已经很好了,在boost里有几个小的算法

1.BOOST_FOREACH使用方法,定义一个容器里内部类型数据,容器作为参数传递。

#include <iostream>
#include <string>
#include <vector>
#include <boost/assign.hpp>
#include <boost/foreach.hpp>
using namespace std;
using namespace boost::assign;


int main()
{
	
	vector<int> v = list_of(1)(2)(3)(4)(5);
	BOOST_FOREACH(int x,v)
	{
		cout << x << ",";
	}
	cout << endl;
	string str("boost foreach");
	BOOST_FOREACH(char c,str)
	{
		cout << c << "-";
	}
	cout << endl;
	return 0;
}

 2.minmax同时返回两个数最大值和最小值,返回类型为tuple,使用方法:

#include <iostream>
#include <string>
#include <vector>
#include <boost/assign.hpp>
#include <boost/typeof/typeof.hpp>
#include <boost/algorithm/minmax.hpp>
#include <boost/tuple/tuple.hpp>
using namespace std;
using namespace boost::assign;


int main()
{

	BOOST_AUTO(x,boost::minmax(100,200));
	cout << x.get<1>() << " " << x.get<0>() <<endl;
	return 0;
}

 3.minmax_element()用于找出容器中的最大值和最小值。

#include <iostream>
#include <string>
#include <vector>
#include <boost/assign.hpp>
#include <boost/typeof/typeof.hpp>
#include <boost/algorithm/minmax_element.hpp>
#include <boost/tuple/tuple.hpp>
using namespace std;
using namespace boost::assign;
using namespace boost;

int main()
{
	vector<int> v = list_of(633)(90)(67)(83)(2);
	BOOST_AUTO(x,boost::minmax_element(v.begin(),v.end()));
	cout << "min: " << *x.first <<endl;
	cout << "max: " << *x.second <<endl;

	return 0;
}

 

 

posted @ 2013-08-17 11:29  l851654152  阅读(2016)  评论(0编辑  收藏  举报