Namespaces
Variants

类似元组,类似对组

来自 zh.cppreference.net
 
 
 
 
template< class T >
concept tuple-like = /* see below */;
(1) (C++23 起)
(仅用于阐述*)
template< class T >
concept pair-like =
    tuple-like<T> && std::tuple_size_v<std::remove_cvref_t<T>> == 2;
(2) (C++23 起)
(仅用于阐述*)
1) 类型 T 建模并满足概念 tuple-like 的条件是:std::remove_cvref_t<T> 是以下类型的特化:
  • std::array、
  • std::complex、
(C++26 起)
  • std::pair、
  • std::tuple 或
  • std::ranges::subrange。
2) pair-like 对象是恰好有 2 个元素的 tuple-like 对象。

注释

tuple-like 类型实现了 元组协议 ,即此类类型可与 std::get 、 std::tuple_element 及 std::tuple_size 配合使用。

tuple-like 类型的元素可以通过 结构化绑定 进行绑定。

参见

tuple-like 和 pair-like 在以下标准库组件中使用:

构造新的 tuple
(公开成员函数)
将一个 tuple 的内容赋值给另一个
(公开成员函数)
(C++20 中移除) (C++20 中移除) (C++20 中移除) (C++20 中移除) (C++20 中移除) (C++20)
按字典序比较 tuple 中的值
(函数模板)
确定 tuple 与 tuple-like 类型的共同引用类型
(类模板特化)
确定 tuple 与 tuple-like 类型的共同类型
(类模板特化)
(C++11)
通过连接任意数量的 tuple 来创建 tuple
(函数模板)
(C++17)
以 tuple 参数调用函数
(函数模板)
以 tuple 参数构造对象
(函数模板)
构造新的 pair
( std::pair<T1,T2> 的公开成员函数)
赋值内容
( std::pair<T1,T2> 的公开成员函数)
将 subrange 转换为 pair-like 类型
( std::ranges::subrange<I,S,K> 的公开成员函数)
接受由 tuple-like 值组成的 view 和数字 N,生成每个 tuple 第 N 个元素的 view
(类模板) (范围适配器对象)