Boost中的容器boost::tuple

博客介绍了Boost中的tuple库如何提升程序效率,作为返回多个值的解决方案,并对比了tuple与std::pair的优势。内容包括tuple的使用场景和主要函数接口。
摘要由CSDN通过智能技术生成

导言

  1. tuple库如何改进我们的程序?

    • 从函数返回多个返回值
    • 相关类型的组合
    • 将数值组合起来
  2. tuple比pair好在哪里?
    标准库提供了一个 tuple 的特例,一个2-tuple, 名为 std::pair. 这个结构被用于标准库的容器,你可能在操作 std::map 的元素时已经留意到了。你也可以在容器类中存储 pair。当然,std::pair 不仅是为了给容器类使用的,它还有它自己的用途,它附带有一个方便的函数 std::make_pair, 可以自动地进行类型推断,还有一组操作符用于 pair 的比较。一个 tuple 的通常解决方案,而不仅仅是 2-tuples,会更加有用。Tuple 库所提供的还不是完全通用的,它最多可以允许10个元素的 tuple (如果需要更多的,看起来不常见但也不是没有可能的,这个限制可以放松)。还有,这些 tuples 的效率与使用 struct 的手工解决方案同样高!

使用

以下是 Boost.Tuple 的部分接口,列出了最主要的一些函数。

namespace boost { 
    template <class T1, class T2, ..., class TM> 
    class tuple { 
        public:    
            tuple();     
            template <class P1, class P2..., class PM>       
                tuple(class P1, class P2, ..., PN);         
            template <class U1, class U2, ..., class UN>    
                tuple(const tuple<U1, U2, ..., UN>&);        
            tuple& operator=(const tuple&); 
    };  
            template<class T1, class T2, ..., class TN> 
                tuple<V1, V2, ..., VN>     
                make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);  
            template<class T1, class T2, ..., class TN> 
                tuple<T1&, T2&, ..., TN>     
                tie(T1& t1, T2& t2, ..., TN& tn);  
            template <int I, class T1, class T2, ..., class TN>     
                RI get(tuple<T1, T2, ..., TN>& t);  
            template <int I, class T1, class T2, ..., class TN>     
                PI get(const tuple<T1, T2, ..., TN>& t);  
            template <class T1, class T2, ..., class TM, class U1, class U2, ..., class UM>    
                bool operator==(const tuple<T1, T2, <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值