C++ - "tuple"(元组)容器 详解 及 代码

2014-11-24 03:21:02 · 作者: · 浏览: 0

tuple(元组)容器 详解 及 代码

tuple容器(元组), 是表示元组容器, 是不包含任何结构的,快速而低质(粗制滥造, quick and dirty)的, 可以用于函数返回多个返回值;

tuple容器, 可以使用直接初始化, 和make_tuple()初始化, 访问元素使用get<>()方法, 注意get里面的位置信息, 必须是常量表达式(const expression);

可以通过std::tuple_size ::value 获取元素数量; std::tuple_element<0, decltype(t)>::type获取元素类型;

如果tuple类型进行比较, 则需要保持元素数量相同, 类型可以比较, 如相同类型, 或可以相互转换类型(int&double);

无法通过普通的方法遍历tuple容器, 因为get<>()方法, 无法使用变量获取值;

以下代码包含一些基本的用法, 详见注释;

代码:

/*
 * CppPrimer.cpp
 *
 *  Created on: 2013.12.9
 *      Author: Caroline
 */

/*eclipse cdt, gcc 4.8.1*/

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       using namespace std; std::tuple
      
        giveName(void) { std::string cw(Caroline); int a(2013); std::tuple
       
         t = std::make_tuple(cw, a); return t; } int main() { std::tuple
        
          t(64, 128.0, Caroline); std::tuple
         
           t2 = std::make_tuple(Caroline, Wendy, 1992); //返回元素个数 size_t num = std::tuple_size
          
           ::value; std::cout << num = << num << std::endl; //获取第1个值的元素类型 std::tuple_element<1, decltype(t)>::type cnt = std::get<1>(t); std::cout << cnt = << cnt << std::endl; //比较 std::tuple
           
             ti(24, 48); std::tuple
            
              td(28.0, 56.0); bool b = (ti < td); std::cout << b = << b << std::endl; //tuple作为返回值 auto a = giveName(); std::cout << name: << get<0>(a) << years: << get<1>(a) << std::endl; return 0; } 
            
           
          
         
        
       
      
     
    
   
  

输出:

num = 3
cnt = 128
b = 1
name: Caroline years: 2013

\