`

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`是C++社区广泛使用的工具,因为它提供了灵活且类型安全的方式来组合和传递多个值。本篇文章将探讨如何实现一个类似于Boost的`Tuple`功能,并介绍与之相关的编程知识点。 首先,`Tuple`的基本概念...

    BOOST学习资料整理收集

    4. **标准化推动者**:许多Boost库如`shared_ptr`、`unique_ptr`、`tuple`、`lambda`等已进入C++11标准库。 二、Boost库的主要组件: 1. **Boost.And.STL学习资料**:这是一份关于如何结合使用Boost库和STL...

    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

    C++ Boost 库中文文档

    2. **标准库前驱**:许多Boost库已被采纳进入C++标准库,如`shared_ptr`、`unique_ptr`、`variant`和`tuple`等。 3. **跨平台**:Boost库在多种操作系统和编译器上都能良好运行,包括Windows、Linux、Mac OS X等。 4...

    Boost库学习指南与使用说明

    4. **增强的std::pair——TupleTypes**:了解`boost::tuple`如何提供比`std::pair`更强大、更灵活的元组类型。 #### 五、总结 通过本文的学习,我们了解到Boost库是一个功能强大且极其有用的C++库集合。无论是初学...

    boost程序库导论

    - **Tuple**:固定大小的复合类型,可以存储不同类型的数据成员。 ### 函数对象与高级编程 这部分讨论了Boost中用于支持函数式编程和高级编程模式的库。 - **Bind**:用于创建可调用对象,这些对象可以绑定到特定...

    介绍Boost libraries: C++编程的下一个突破

    7. Tuple:元组库允许程序员创建和操作固定大小的、异质的值集合。这在函数返回多个值时特别有用,省去了定义结构体或类的麻烦。 Boost库的其他部分还包括对数据结构、容器、迭代器、算法、函数对象、泛型编程、...

    boost_1_34_0的包含文件(boost目录下的全部文件)

    Boost库的核心目标是推动C++标准的发展,并且很多Boost库最终被纳入到了C++标准库中,例如`shared_ptr`、`unique_ptr`、`bind`、`lambda`、`variant`和`tuple`等。下面将详细探讨一些在`boost_1_34_0`中重要的库和...

    没有boost命名空间的Boost.PFR.zip

    这个库在早期的版本中, Boost 库包含了它,但后来为了保持 Boost 的精简和避免命名空间冲突,Boost.PFR被移出,不再在boost命名空间下使用。因此,我们有了“没有boost命名空间的Boost.PFR”。 Boost.PFR库的核心...

    C++准标准库Boost介绍

    Array(固定大小数组),Compressed_pair(压缩对),Dynamic_bitset(动态位集),Graph(图算法),Iterator(迭代器工具),MultiArray(多维数组),Multi-index(多索引容器),Range(范围操作),Tuple(元组...

    Boost 库中文版

    2. **容器**(Containers):如`multi_array`提供多维数组,`fusion`则与C++11的`std::tuple`类似,但提供了更丰富的操作。 3. **算法**(Algorithms):Boost提供了一套扩展的算法库,如`assign`用于快速填充容器...

    boost_1_75_0.tar.gz

    6. **容器和泛型编程**(Containers and Generic Programming):如`multi_array`用于多维数组操作,`tuple`提供类似元组的数据结构,`mpl`则提供了元编程库。 7. **日志库**(Logging):提供了灵活的日志记录框架...

    Boost C++ 库 简介(中文)

    由于Boost库的广泛采用,许多优秀的实现已被采纳进入C++标准库,例如`smart_ptr`、`tuple`和`regex`。 总的来说,Boost C++库是C++程序员的强大工具箱,无论是开发大型企业级应用还是进行研究项目,都能从中受益。...

    c++资源Boost库及指南

    10. **Boost.Tuple**:提供了一种更灵活的数据结构来存储多个不同类型的值。 #### 三、Boost库的安装与配置 - **Windows平台**:可以通过预编译的二进制包进行安装,也可以使用CMake等工具进行自定义编译。 - **...

    C++标准库Boost程序库导论

    Boost在这一领域也贡献颇多,其中最为人熟知的是`boost::array`、`boost::multi_array`、`boost::tuple`、`boost::variant`等容器。这些容器提供了更灵活的选择,比标准库中的容器更加多样化,能够满足不同场景下的...

    boost1.57 libs源代码第二部分

    在"boost1.57 libs源代码第二部分"中,包含了一些核心的Boost组件,如signals、logic、smart_ptr、log、thread、polygon、tuple、pool、parameter和phoenix。以下是对这些组件的详细解释: 1. **signals**:Boost....

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

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

    超越C++标准库-boost程序库导论

    - **Boost.Tuple**:提供固定大小的元组类型。 #### Smart_ptr库 - **scoped_ptr**:拥有一个非共享资源的所有权,并在其作用域结束时自动释放资源。 - **scoped_array**:与scoped_ptr类似,但管理的是数组资源。...

Global site tag (gtag.js) - Google Analytics