std::tie 简单应用:解压元组std::tuple

std::tie 介绍

std::tie是C++11以后引入的新特性,是一个函数模板,原型:

template<class... Types>
  tuple<Types&...> tie (Types&... args) noexcept;

tie将其参数通过引用方式绑定到tuple的元素,常用来解压pair/tuple。如果想忽略其中的参数,可以配合使用std::ignore。

应用

向set插入(insert)数据后,返回的是一个pair:返回的pair中,first域是一个迭代器,指向insert进set的元素;second域是insert的bool类型结果(true or false);

在没有std::tie之前,如果想获取set::insert的结果,需要这样做:

    set<string> s;
    auto res = s.insert("A");
    cout << *res.first << endl; // 打印A
    cout << res.second << endl; // 打印1, 代表true

而有了std::tie之后,可以直接用一条语句将pair解压,并保存到各变量中:

    set<string> s;
    ...
    set<string>::const_iterator cit;
    std::tie(cit, inserted) = s.insert("B");
    cout << *cit << endl;
    cout << inserted << endl;

这里cit类型太复杂,实际应用中可能并不关心其类型,也不需要关心指向的值。此时,可以用std::ignore来忽略该值。std::ignore是一个未指定的类型对象, 任何值都可以没有影响的赋值给它。

    std::tie(std::ignore, inserted) = s.insert("B"); // 忽略insert返回的pair的first域
    cout << inserted << endl;

参考

http://www.cplusplus.com/reference/tuple/tie/

原文链接: https://www.cnblogs.com/fortunely/p/16111167.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    std::tie 简单应用:解压元组std::tuple

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/402678

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月21日 上午11:09
下一篇 2023年4月21日 上午11:10

相关推荐