initializer_list 详解
std::initializer_list 是 C++11 引入的一个模板类,它用于表示一个初始化列表,通常用于函数参数,允许使用花括号 {} 进行初始化。
基本用法
cpp
std::initializer_list<int> list = {1, 2, 3, 4, 5}; | |
这里,list 是一个包含五个整数的初始化列表。
主要用途
1.函数参数:允许函数接受初始化列表作为参数。
cpp
void foo(std::initializer_list<int> list) { | |
for (const auto& elem : list) { | |
std::cout << elem << ' '; | |
} | |
} | |
foo({1, 2, 3}); // 输出: 1 2 3 | |
2.数组初始化:用于初始化数组。
cpp
std::array<int, 3> arr = {1, 2, 3}; // 等价于 std::array<int, 3> arr = { {1, 2, 3} }; | |
3.结构体和类的成员初始化:允许使用初始化列表进行成员初始化。
cpp
struct Bar { | |
int a; | |
int b; | |
}; | |
Bar bar = {1结构体数组不能作为参数传递给函数, 2}; // 等价于 Bar bar = {{1}, {2}};,取决于编译器和结构体定义。 | |
注意点
∙std::initializer_list 的元素类型是固定的,即它们是常量引用。因此,尝试修改其内容会导致编译错误。
∙std::initializer_list 的大小是固定的,不能被修改。这意味着你不能动态地添加或删除元素。
∙std::initializer_list 的生命周期与包含它的对象(如函数参数)相同。当包含它的对象超出作用域时,std::initializer_list 也将不再有效。
∙std::initializer_list 可以是空的,即它可以包含零个元素。例如,std::initializer_list<int> list = {};。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论