导航

输出tuple和chrono的使用小例子

Posted on 2014-11-29 15:30  ggzone  阅读(119)  评论(0编辑  收藏  举报
// move example
#include <iostream>     // std::cout
#include<tuple>

#include<ratio>
#include<chrono>

using namespace std;


template<typename... Types>
ostream& operator<<(ostream& os, const tuple<Types...>& t1)
{
	os << '[';
	PRINT_TUPLE<0, sizeof...(Types), Types...>::print(os, t1);
	os << ']';
	return os;
}
template<int index, int max, typename... Types>
struct PRINT_TUPLE
{
	static void print(ostream& os, const tuple<Types...>& t1)
	{
		os << get<index>(t1);
		if(index<max-1)
			os << ',';
		PRINT_TUPLE<index + 1, sizeof...(Types), Types...>::print(os, t1);
	}
};

template<int max, typename... Types>
struct PRINT_TUPLE<max,max,Types...>
{
	static void print(ostream& os, const tuple<Types...>& t1)
	{
	
	}
};

int main() {
	
	using namespace chrono;
	using days_type=duration<int, ratio<60 * 60 * 24>>;

	system_clock::time_point t1 = system_clock::now();
	time_point<system_clock, days_type> today = time_point_cast<days_type>(system_clock::now());
	cout << "距离1970年1月1日"<<today.time_since_epoch().count()<<"天" << endl;
	system_clock::time_point tp = system_clock::now(); //typedef chrono::time_point<system_clock> system_clock::time_point;
	tp += chrono::hours(24);
	time_point<system_clock, days_type> tomorrow=time_point_cast<days_type>(tp);
	cout << "距离1970年1月1日" << tomorrow.time_since_epoch().count() << "天" << endl;
	system_clock::duration du(11); //typedef chrono::duration<rep, period> system_clock::duration;
	cout <<"count:"<< du.count()<<",period:"<<system_clock::period::num<<'/'<<system_clock::period::den << endl;
	nanoseconds dn=duration_cast<nanoseconds>(du);
	cout <<"nanoseconds count:"<< dn.count()<< endl;
	system_clock::time_point t2 = system_clock::now();
	cout << "程序运行时间:" << duration_cast<microseconds>(t2 - t1).count() <<"微秒"<< endl;

	system("pause");
	return 0;
}