遍历输出tuple元素的简洁方式(C++11)

//遍历输出tuple元素的简洁方式(C++11)
//Win32Con17_VS2017_01.cpp
#include <iostream>
#include <tuple>
using namespace std;

template<typename... Args>
void myprint_impl(tuple<Args...> tup)        //泛化版本
{
    cout << tup._Myfirst._Val << ((tup._Mysize > 1) ? ", " : "");    //输出tup的头1项
    myprint_impl(tup._Get_rest());                                    //对除头1项之外的tup递归调用
}

template<>
void myprint_impl(tuple<> tup)                //终止条件
{
    cout << endl;
}

int main()
{
    auto t = make_tuple(3, 4.67, "Hello", true);
    myprint_impl(t);        //3, 4.67, Hello, 1

    system("pause");
    return 0;
}
时间: 2024-10-10 05:22:23

遍历输出tuple元素的简洁方式(C++11)的相关文章

遍历获得磁盘文件的两种方式

在winform中可能有这种情况,遍历某一个文件夹得到当前文件夹中的所有文件以及子文件夹中的所有文件,以此类推,然后添加到一个TreeView控件中,或者通过控制台输出文件以及文件夹的名称.方法多种多样,下面说的是通过递归和队列的方式来进行.递归其实就是在函数调用的时候进行压栈进行的,所以可以概述为通过栈和队列来实现. 递归方式实现 private void GetAllFile (string strPath,TreeNode parentNode) { //得到当前路径下的所有文件和文件夹

Binary Tree Inorder/Preorder Traversal 返回中序和前序/遍历二叉树的元素集合

给定一个二叉树,以集合方式返回其中序/先序方式遍历的所有元素. 有两种方法,一种是经典的中序/先序方式的经典递归方式,另一种可以结合栈来实现非递归 Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tree {1,#,2,3}, 1 2 / 3 return [1,3,2]. OJ's Binary Tree Serialization: The ser

2016/1/10 作业 1, 二维数组遍历输出求和 2,转置运算???? 3,九宫格?? 后两个存在问题

1 public class arr1 { 2 3 4 public static void main(String[] args) { 5 // 创建二维数组arr[][],输出二维数组所有元素的和. 6 7 int arr[][]={{1,3,5,7,9},{21,23,25,27,29}, 8 {12,14,16,18},{32,34,36,38}}; 9 int sum=0; 10 System.out.println("二维数组遍历"); 11 // for循环 遍历 求和

Java HashMap 如何正确遍历并删除元素

(一)HashMap的遍历 HashMap的遍历主要有两种方式: 第一种采用的是foreach模式,适用于不需要修改HashMap内元素的遍历,只需要获取元素的键/值的情况. HashMap<K, V> myHashMap; for (Map.entry<K, V> item : myHashMap.entrySet()){ K key = item.getKey(); V val = item.getValue(); //todo with key and val //WARNI

数据结构:树的BFS,树的层次遍历! 按先序遍历创建一棵树,然后以层次遍历输出。

按先序遍历创建一棵树,以层次遍历输出 样例输入 A B # D # # C E # # F # # 样例输出 LevelOrder: A B C D E F 代码: #include <iostream> #include <queue> using namespace std; struct node { //表示一个树上的节点 char ch; node *left, *right; }; node* creat() { //以递归的方式构造一棵二叉树 node *root =

各种遍历输出(经典版)----java基础总结

前言:关于共有3中遍历输出方式,很早之前我就想整理,无奈一直没有抽出时间,分别是传统的for循环遍历,迭代器Iterator,foreach,这次我通过测试代码,测试了一下. 先用一张草图,大概有个印象:,图虽然丑了点但是全部是干货. 这是我的测试代码,我用的是测试方法写: 1 package com.mon11.day11; 2 3 import static org.junit.Assert.*; 4 5 import java.util.ArrayList; 6 import java.u

jsp页面遍历输出

<c:foreach>类似于for和foreach循环 以下是我目前见过的用法: 1.循环遍历,输出所有的元素.<c:foreach items="${list}" var="li">${li}</c:foreach> 注意:items 用于接收集合对象,var 定义对象接收从集合里遍历出的每一个元素.同时其会自动转型. 2.循环遍历,输出一个范围类的元素. <c:foreach items ="${lis}&qu

js数组及数组应用(冒泡和二分,遍历输出)

一.定义:1)var arr=new Array(); 加数据:arr[0]=1; 2)定义同时赋值:var arr=new Array(1,2,3,4,5); 3)调用:var arr=new Array(); arr.push(1);用.push调用 4)var arr=[1,2,3,4,5]; alert(arr[4]); 二.属性:1)arr.length:数组的长度 eg:var arr=new Array(1,2,3,4,5,6); alert(arr.length); arr.le

java 集合遍历时删除元素

本文探讨集合在遍历时删除其中元素的一些注意事项,代码如下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 import java.util.ArrayList; import java.util.Iterator; import java