`

boost tuple

阅读更多
tuple(元组):定义了一个有固定数目元素的容器,其中的每个元素类型都可以不相同,这与其他容器有着本质的区别。它是std::pair的泛化,可以从函数返回任意数值的值。

tuple默认最多支持10个模板类型参数,也就是说它最多能容纳10个不同类型的元素。

tie()可以方便地利用现有普通变量创建一个可赋值的tuple对象,因此可以对tuple执行"解包"操作.
#include<boost/tuple/tuple.hpp>
#include<string>
#include<iostream>
using namespace boost;
using namespace std;

int main()
{
    tuple<int,string,char> t(1,"abc",'d');
    t = make_tuple(2,"def",'g');
    cout << t.get<0>()<<endl;
    for(int i=0;i<3;++i){
        //这是错误的,get<>()是一个模板函数,编译进行模板实例化时要求模板参数
        //<int N>必须是编译期可确定的,而for循环中的变量i只能在运行时确定,因而
        //无法编译代码
        //cout << t.get<i>() << endl;// error: ‘i’ cannot appear in a constant-expression
    }
    int i;
    string s;
    char c;
    tie(i,s,c) = t;
    cout <<"i,s,c:"<<i<<","<<s<<","<<c<<endl;

    tie(i,s) = make_tuple(3,"aaa");//make_tuple
    cout <<"std::pair:i,s"<<i<<","<<s<<endl;
    //tuples::ignore相当于占位符,可以忽略某些对象,如下只接收string值
    tie(tuples::ignore,s) = make_pair(4,"bbb");//make_pair
    cout << s << endl;
}


2
i,s,c:2,def,g
std::pair:i,s3,aaa

分享到:
评论

相关推荐

    类似Boost中Tuple的实现

    类似Boost中Tuple的实现 自己编写的 请支持原创

    THE BOOST C++ LIBRARIES

    THE BOOST C++ LIBRARIES是一份...14.2 Boost.Tuple 14.3 Boost.Any 14.4 Boost.Variant 14.5 Exercises Chapter 15: Error Handling 15.1 General 15.2 Boost.System 15.3 Boost.Exception Chapter 16: Cast Operators

    boost 1.41 中文文档,使用帮助,教程手册

    汉化 boost 文档,致力 boost 推广。 如果你对本项目有兴趣,欢迎加入,相关说明请查阅项目论坛: https://groups.google.com/ 到目前为止,各人贡献的译文如下: 贡献者 贡献的译文 alai04 accumulators, any, ...

    Class_to_json.zip

    C++通用性的Class转化为json。使用boost,tuple完成反射,使用jsoncpp,cmake。

    pfr:std :: tuple类似用户定义类型的方法,没有任何宏或样板代码

    增强PFR 这是一个C ++ 14库,用于非常基本的反射,使您可以按索引访问结构元素,并为用户定义的类型提供其他std::tuple类的方法,而无需任何宏或样板代码。检测结果分行建立测试覆盖率更多信息开发: 主: 激励实例...

    Reflection_C_plus_plus:C ++中的反思

    介绍使用C ++模板元编程技术(Boost.MPL) 在编译期间生成的元数据存储在只读数据区域中需要boost库和GCC 4.7或更高版本样本# include &lt; cstdlib&gt;# include &lt; cstring&gt;# include &lt; iostream&gt;# include &lt; tuple&gt;# ...

    multi_index:最小提升

    multi_index BoostLess MultiIndex,用于C ++ 11编译器。 目录 介绍 Boost是一个很棒的库,尽管它旨在通过尽可能多的... 删除Boost.MPL以使用和std :: tuple。 文献资料 除Boost名称空间外,该文档应与相同。 平台

    hana:您的元编程标准库

    助推汉娜 您的元编程标准库总览# include &lt; boost&gt;# include &lt; cassert&gt;# include &lt; string&gt;namespace hana = boost::hana;using namespace hana ::literals ;struct Fish { std::string name; };struct Cat { std::...

    cxl:一些C ++实用程序

    从Simimir到Boost.Variant的variant ,具有完整的move和右值引用支持,减少了黑客攻击,即避免使用boost::detail::variant::void_来满足所有模板参数。 通过使用宏定义一些元数据来最小化反射支持: CXL_BEGIN_...

    rebind:C++ 模板操作库

    在重新绑定中,您可以将类型存储在您想要的任何类中,例如std::tuple或空结构: template struct Container { }; Rebind本身是从一个实例中获取模板参数并将它们应用于不同的模板 - 例如: # include " rebind...

    tinympl:C++11 模板元编程库

    与 Boost.MPL 不同的是,这个包利用了 C++11 特性,从而产生了更小的代码库。 主要特点: 广泛的算法库,适用于可变参数模板和(可能是用户定义的)模板类型(如std::tuple )。 编译时容器,例如map 、 vector和...

    libfptu:最快的类似于JSON数据的二进制表示形式之一

    我们可以说libfptu提供了JSON的灵活性,即具有boost :: optional和boost :: variant功能的本地C结构的速度。 当前版本的libfptu支持绑定到本机C结构的数据架构和预放置字段(也称为预放置字段),以及在共享内存中...

    lexyaccmingw

    * unique元函数 * filter元函数 * map元函数 * reduce元函数 * 自动生成C++类 * scatter类 * tuple结构 * 分析C++类层次 * 分析C++类结构 * 类是否拥有指定参数的成员函数 ...

Global site tag (gtag.js) - Google Analytics