企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 标准库中的元组(std::tuple) 在标准库中,tuple(一个N元组:N-tuple)被定义为N个值的有序序列。在这里,N可以是从0到文件中所定义的最大值中的任何一个常数。你可以认为tuple是一个未命名的结构体,该结构体包含了特定的tuple元素类型的数据成员。特别需要指出的是,tuple中元素是被紧密地存储的(位于连续的内存区域),而不是链式结构。 可以显式地声明tuple的元素类型,也可以通过make_tuple()来推断出元素类型。另外,可以使用get()来通过索引(和C++的数组索引一样,从0而不是从1开始)来访问tuple中的元素。 ``` tuple<string,int> t2(“Kylling”,123); // t的类型被推断为tuple auto t = make_tuple(string(“Herring”),10, 1.23); // 获取元组中的分量 string s = get<0>(t); int x = get<1>(t); double d = get<2>(t); ``` 有时候,我们需要一个编译时异构元素列表(a heterogeneous list of elements at compile time),但又不想定义一个有名字的结构来保存。这种情况下,我们就可以使用tuple(直接地或间接地). 例如,我们在std::function and std::bind中使用tuple来保存参数。 最常用的tuple是2-tuple(二元组),也就是一个pair。但是标准库已经定义了pair:std::pair (20.3.3 Pairs)。 我们可以使用pair来初始化一个tuple,然而反之则不可。 另外,需要为tuple中的元素类型定义比较操作(`==`, `!=`, `<` , `<=`, `>`, 和 `>=`). 参考: * Standard: 20.5.2 Class template tuple * Variadic template paper * Boost::tuple