C++ 库 - <initializer_list>



C++ 中的<initializer_list> 提供了一种方便的方法来使用值列表初始化容器和用户定义类型。它允许通过启用使用逗号分隔的元素列表初始化集合来编写更灵活和可读的代码。

<initializer_list> 是一个轻量级的代理对象,它允许构造函数接受值列表而无需显式指定类型。在使用标准库容器(如 vector、set 和 map)时使用它。

包含 <initializer_list> 头文件

要在 C++ 程序中包含 <initializer_list> 头文件,可以使用以下语法。

#include <initializer_list>

<initializer_list> 头文件的函数

以下是 <initializer_list> 头文件中所有函数的列表。

序号 函数及描述
1 size

它返回 initializer_list 中元素的数量。

2 begin

它返回指向第一个元素的指针。

3 end

它返回指向最后一个元素之后位置的指针。

从初始化列表中添加值

在下面的示例中,我们将计算 initializer_list 中元素的总和。

#include <iostream>
#include <initializer_list>
int a(std::initializer_list < int > list) {
   int b = 0;
   for (auto x: list) {
      b += x;
   }
   return b;
}
int main() {
   int y = a({2,4,6,10});
   std::cout << "Result : " << y << std::endl;
   return 0;
}

输出

以上代码的输出如下:

Result : 22

组合两个初始化列表

考虑下面的例子,我们将组合来自多个初始化列表的值。

#include <iostream>
#include <initializer_list>
#include <vector>
std::vector < int > a(std::initializer_list < int > x, std::initializer_list < int > y) {
   std::vector < int > b;
   b.insert(b.end(), x);
   b.insert(b.end(), y);
   return b;
}
int main() {
   auto b = a({1,3,5}, {2,4,6});
   for (auto value: b) {
      std::cout << value << " ";
   }
   std::cout << std::endl;
   return 0;
}

输出

以下是上述代码的输出:

1 3 5 2 4 6
广告