跳到主要内容

定义于: <initializer_list>

概述

template< class T >
class initializer_list;

std::initializer_list 是一个轻量级容器,用于保存列表初始化或花括号初始化中的对象。

内存

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

技术细节

特性测试宏
重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

技术定义

类型为 std::initializer_list<T> 的对象是一个轻量级代理对象,它提供对 const T 类型对象数组的访问。

std::initializer_list<T> 对象在以下情况自动构造:

  • 花括号初始化列表用于列表初始化对象,其中相应的构造函数接受 std::initializer_list<T> 参数
  • 花括号初始化列表用作赋值的右操作数或函数调用参数,并且相应的赋值运算符/函数接受 std::initializer_list<T> 参数
  • 花括号初始化列表绑定到 auto,包括在范围 for 循环中

初始化列表可以实现为一对指针或指针和长度。

注意

复制 std::initializer_list 不会复制底层对象。

底层数组是一个 const T[N] 类型的临时数组,其中每个元素都从原始初始化列表的相应元素进行复制初始化(除了窄化转换无效)。底层数组的生命周期与任何其他临时对象相同,但从数组初始化初始化列表对象会像将引用绑定到临时对象一样延长数组的生命周期(具有相同的例外情况,例如初始化非静态类成员)。底层数组可能分配在只读内存中。

危险

如果 Count > Extent,则程序格式错误

如果声明了 std::initializer_list 的显式或部分特化。

std::initializer_list

定义于initializer_list

模板参数

pubT元素的类型。

类型名称

pubvalue_typeT
pubreferenceconst T&
pubconst_referenceconst T&
pubsize_type无符号整型(通常是std::size_t
pubiteratorconst T*
pubconst_iteratorconst T*

成员函数

pub(构造函数)

构造一个初始化列表。

pub(析构函数)

销毁初始化列表。

容量

pubsize

返回元素数量。

迭代器

pubbegin
cbegin (自 C++11 起)

返回指向起始元素的iterator/const_iterator

pubend
cend (自 C++11 起)

返回指向结束元素的iterator/const_iterator

非成员函数

pubstd::begin (std::initializer_list)

std::begin 的重载。

pubstd::end (std::initializer_list)

std::end 的重载。

std::initializer_list 重载的自由函数模板

pubrbegin
crbegin (自 C++14 起)

返回一个反向 iterator/const_iterator 指向起始位置。

pubrend
crend (自 C++14 起)

返回一个反向 iterator/const_iterator 指向结束位置。

pubempty (自 C++17 起)

如果初始化列表为空,则返回 true,否则返回 false

pub数据 (自 C++17 起)

返回指向底层数组第一个元素的指针。

示例

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

本文源自此 CppReference 页面。它可能已为改进或编辑偏好而进行更改。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。

定义于: <initializer_list>

概述

template< class T >
class initializer_list;

std::initializer_list 是一个轻量级容器,用于保存列表初始化或花括号初始化中的对象。

内存

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

技术细节

特性测试宏
重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

技术定义

类型为 std::initializer_list<T> 的对象是一个轻量级代理对象,它提供对 const T 类型对象数组的访问。

std::initializer_list<T> 对象在以下情况自动构造:

  • 花括号初始化列表用于列表初始化对象,其中相应的构造函数接受 std::initializer_list<T> 参数
  • 花括号初始化列表用作赋值的右操作数或函数调用参数,并且相应的赋值运算符/函数接受 std::initializer_list<T> 参数
  • 花括号初始化列表绑定到 auto,包括在范围 for 循环中

初始化列表可以实现为一对指针或指针和长度。

注意

复制 std::initializer_list 不会复制底层对象。

底层数组是一个 const T[N] 类型的临时数组,其中每个元素都从原始初始化列表的相应元素进行复制初始化(除了窄化转换无效)。底层数组的生命周期与任何其他临时对象相同,但从数组初始化初始化列表对象会像将引用绑定到临时对象一样延长数组的生命周期(具有相同的例外情况,例如初始化非静态类成员)。底层数组可能分配在只读内存中。

危险

如果 Count > Extent,则程序格式错误

如果声明了 std::initializer_list 的显式或部分特化。

std::initializer_list

定义于initializer_list

模板参数

pubT元素的类型。

类型名称

pubvalue_typeT
pubreferenceconst T&
pubconst_referenceconst T&
pubsize_type无符号整型(通常是std::size_t
pubiteratorconst T*
pubconst_iteratorconst T*

成员函数

pub(构造函数)

构造一个初始化列表。

pub(析构函数)

销毁初始化列表。

容量

pubsize

返回元素数量。

迭代器

pubbegin
cbegin (自 C++11 起)

返回指向起始元素的iterator/const_iterator

pubend
cend (自 C++11 起)

返回指向结束元素的iterator/const_iterator

非成员函数

pubstd::begin (std::initializer_list)

std::begin 的重载。

pubstd::end (std::initializer_list)

std::end 的重载。

std::initializer_list 重载的自由函数模板

pubrbegin
crbegin (自 C++14 起)

返回一个反向 iterator/const_iterator 指向起始位置。

pubrend
crend (自 C++14 起)

返回一个反向 iterator/const_iterator 指向结束位置。

pubempty (自 C++17 起)

如果初始化列表为空,则返回 true,否则返回 false

pub数据 (自 C++17 起)

返回指向底层数组第一个元素的指针。

示例

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

本文源自此 CppReference 页面。它可能已为改进或编辑偏好而进行更改。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。