模板超编程和tuple的输出
来源:互联网 发布:七天网络查分登录 编辑:程序博客网 时间:2024/05/16 19:07
#include <tuple>#include <iostream>#include <string>using namespace std;template <int IDX, int max, typename... Args>struct TUPLE_PRINT{ static void print(ostream& strm,const tuple<Args... >& t)//1 少const { strm << get<IDX>(t) << (IDX+1==max ? "" : ",") ; //IDX + 1 = max ? TUPLE_PRINT(max, t) : IDX ++; //注意1 TUPLE_PRINT<IDX+1,max,Args...>::print(strm,t); }};//partial specialization to end the recursiontemplate <int max, typename... Args>//注意2struct TUPLE_PRINT<max, max, Args...>{ static void print(ostream& strm, const tuple<Args... args>& t) { }}template <typename... Args>ostream& operator<<(ostream& strm, const tuple<Args...> &t){ strm << "[" << TUPLE_TUPLE<0,sizeof...(Args), Args...>::print(strm, t); return strm << "]";}void main(){ tuple<int,float,string> t(77,1.36,"more light"); cout << " " << t << endl;}//模板部分递归,之前在E中就不明白怎么结束递归//只知道用一个偏特化来结束,也不知道这个偏特化该怎么写://1:从注意1,可以看出我现在的念想还是,用值来控制,事实情况也确实是idx == max//结束递归,但事实情况是,让编译器自己去决定什么时候,跟重载一样,而且可以确定是//他一定可以工作的很好,另外两点,a,递归调用的怎么可能是类(除非他有operator())/*b:一个模板类用的时候,必须加上他的模板参数 2:注意2,A实在说不上是总结,因为我实在不懂,这个偏特化为什么是空的函数体?至少应该 把第max个元素输出吧 B 不得不注意的是,他的名字后面还有<paras>,且参数个数与原模板保持一致*/void main1(){ tuple<int,int,int>t{1,1,1}//have a try}
0 0
- 模板超编程和tuple的输出
- 输出tuple和chrono的使用小例子
- 输出任意一个tuple的元素
- Scala编程实例:使用List和Tuple
- python的list和tuple
- python的list 和 tuple
- python的list和tuple
- Python3的list和tuple
- list 和tuple的使用
- Python编程(一):Python中tuple和list的一点思考
- c++ tuple模板学习
- error C2977: “std::tuple”: 模板参数太多 的解决办法
- std::tuple类模板的理解与使用
- scala List和Tuple的用法
- list和tuple间的互换
- [python] list和tuple的异同
- python学习----list和tuple的区别
- Python list和tuple的相互转换
- 1.创建型.1工厂模式
- 一种大规模网络流式数据缓存写入的方法
- 表插入排序
- Bash别名与快捷键
- Bash历史命令
- 模板超编程和tuple的输出
- Bash通配符及特殊符号
- Linux网络配置
- 接口应用の接口实现匿名类对象
- 数据库表的冷备份
- 初探Object-c
- python02-数据类型与字符串编码
- shared和unique的基础用法
- pickerView