您的位置:

C++数组初始化方法有哪些?

一、静态初始化

在定义数组时,直接给出数组元素的初始化值。例如:

int arr1[5] = {1, 2, 3, 4, 5};
// 等同于
int arr2[] = {1, 2, 3, 4, 5};

如果未给出的数组元素将被自动初始化为 0。

如果数组元素是字符类型,可以使用双引号来初始化数组:

char str[] = "Hello World!";
// 等同于
char str[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};

二、动态初始化

在数组定义后,逐一给元素赋值。例如:

int arr[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;

这种方式需要逐一对每个元素进行初始化,可以在循环中使用。

三、部分元素初始化

在定义数组时,可以只给出一部分元素的初始化值,其他元素将自动初始化为 0。例如:

int arr[5] = {1, 2};
// 等同于
int arr[5] = {1, 2, 0, 0, 0};

也可以部分引用初始化值数组。例如:

int arr1[5] = {1, 2, 3};
int arr2[5] = {0, 0};
arr2[1] = arr1[1];
arr2[2] = arr1[2];

四、动态分配内存初始化

使用 new 操作符为数组动态分配内存,并初始化元素。例如:

int* arr = new int[5]{1, 2, 3, 4, 5};

这种方式在动态创建数组时非常有用。

五、使用标准库算法初始化

在 C++11 中,标准库为我们提供了 <algorithm> 头文件,里面有一些初始化算法可以使用。例如:

#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec(5);
    std::iota(vec.begin(), vec.end(), 1);
    for (int i : vec) {
        std::cout << i << " ";
    }
}
// 输出:1 2 3 4 5

这里我们使用了 std::iota() 算法,它会将指定范围内的元素按顺序初始化。