C++11:Tuple元组
C++11引入了一种类模板tuple,实例化的对象可以存储任意数量、任意类型的数据
当存储多个不同类型的元素时,可以用tuple
当函数需要返回多个数据时,可以将这些数据存储在tuple中,返回tuple对象
Tuple
#include <tuple>
using std::tuple
1.默认构造函数
constexpr tuple();
2.拷贝构造函数
tuple(const tuple& tp1);
3.移动构造函数
tuple(tuple&& tp1);
4.隐式类型转换构造函数
template <class...UTypes>
tuple(const tuple<UTypes...>& tp1); //左值方式
template <class...UTypes>
tuple(tuple<UTypes....>&& tp1); //右值方式
5.支持初始化列表的构造函数
explicit tuple(const Types&...elems); //左值方式
template<class...UTypes>
explicit tuple(UTypes&&...elems); //右值方式
6.将pair对象转换为tuple对象
template <class U1, class U2>
tuple(const pair<U1, U2>& pr); //左值方式
template <class U1, class U2>
tuple(pair<U1, U2>&& pr); //右值方式
#include <iostream>
#include <tuple>
using std::tuple;
int main()
{
std::tuple<int, char> first;
std::tuple<int, char> second(first);
std::tuple<int, char> third(std::make_tuple(20, 'b'));
std::tuple<long, char> fourth(third);
std::tuple<int, char> fifth(10, 'a');
std::tuple<int, char> sixth(std::make_pair(30, 'c'));
auto first = std::make_tuple(10, 'a');
const int a = 0; int b[3];
auto second = std::make_tuple(a, b);
}
#include <iostream>
#include <tuple>
int main()
{
int size;
//创建一个tuple对象存储 10 和 'x'
std::tuple<int, char> mytuple(10, 'x');
//计算 mytuple 存储元素的个数
size = std::tuple_size<decltype(mytuple)>::value;
//输出 mytuple 中存储的元素
std::cout << std::get<0>(mytuple) << " " << std::get<1>(mytuple) << std::endl;
//修改指定的元素
std::get<0>(mytuple) = 100;
std::cout << std::get<0>(mytuple) << std::endl;
//使用 make_tuple() 创建一个 tuple 对象
auto bar = std::make_tuple("test", 3.1, 14);
//拆解 bar 对象,分别赋值给 mystr、mydou、myint
const char* mystr = nulllptr;
double mydou;
int myint;
//使用 tie() 时,如果不想接收某个元素的值,实参可以用 std::ignore 代替
std::tie(mystr, mydou, myint) = bar;
std::tie(std::ignore, std::ignore, myint) = bar; //只接收第3个整型值
//将 mytuple 和 bar 中的元素整合到 1 个 tuple对象中
auto mycat = std::tuple_cat(mytuple, bar);
size = std::tuple_size<decltype(mycat)>::value;
std::cout << size << std::endl;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)