跳到主要内容

初始化列表 (initializer list) 来简洁地初始化容器

这个语法糖是在 C++11 标准中引入的。在 C++11 中,可以使用初始化列表 (initializer list) 来简洁地初始化容器。这种方式更加方便和直观,比传统的循环遍历赋值要简洁明了。

如果你在使用旧版本的 C++,可能需要使用传统的循环遍历来初始化二维向量。以下是一个示例:

vector<vector<int>> vec2d(2, vector<int>(3));
int Z = 0; // 任意值 Z
for (int i = 0; i < vec2d.size(); ++i) {
for (int j = 0; j < vec2d[i].size(); ++j) {
vec2d[i][j] = Z;
}
}
C++

当声明一个二维向量 vec2d 并初始化时,可以使用以下语法糖:

vector<vector<int>> vec2d(2, vector<int>(3, Z));
C++

这里解释一下每个参数的意义:

  1. vector<vector<int>>:指定了容器的类型,即二维向量。

  2. (2, vector<int>(3, Z)):是一个构造函数的调用,其中包含两个参数。

    • 2:表示要创建的二维向量的行数。在这个例子中,我们创建了2行。

    • vector<int>(3, Z):表示要创建的每一行的内容。

    • vector<int>:指定了每一行的类型,即整型向量。

    • (3, Z):是一个构造函数的调用,其中包含两个参数。

      • 3:表示要创建的每一行的列数。在这个例子中,我们创建了每一行有3列。

      • Z:表示要赋给每个元素的值。这个值可以是任意值,根据你的需求而定。

因此,上述代码将生成一个2行3列的二维向量 vec2d,其中每个元素的值都为 Z

推广

实际上简单的说应该是这样的:

vector<类型> name(元素个数, 元素初始值)
C++

只不过二维矩阵就是这样: (类型为也为向量, 元素初始值也为向量)

vector<vector<类型>> name(vector<类型>元素个数, vector<类型>元素的初始值)
C++

而上面的 vector<int>(3, Z) 则可以看做是一个匿名的 vector<类型>元素. 仅此罢了.

请作者喝奶茶:
Alipay IconQR Code
Alipay IconQR Code
本文遵循 CC CC 4.0 BY-SA 版权协议, 转载请标明出处
Loading Comments...