C++初始化数组的几种常见方法(简单易懂)

 更新时间:2025年02月21日 11:29:04   作者:阳阳小可爱  
本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array和std::vector进行静态和动态初始化的方式,需要的朋友可以参考下

在 C++ 中,初始化数组有几种方式,具体取决于数组的类型、大小以及是否给定初始值

下面是提供几种常见的数组初始化方法:

1、初始化一维数组

1.1、使用列表初始化(推荐方式)

#include <iostream>
 
int main() {
    // 初始化数组,指定元素
    int arr[5] = {1, 2, 3, 4, 5};
 
    // 输出数组内容
    for (int i = 0; i < 5; i++) {
        std::cout << arr[i] << " ";
    }
 
    return 0;
}

1.2、初始化部分列表

#include <iostream>
 
int main() {
    // 只初始化前两个元素,其余元素默认为 0
    int arr[5] = {1, 2};
 
    // 输出数组内容
    for (int i = 0; i < 5; i++) {
        std::cout << arr[i] << " ";
    }
 
    return 0;
}

1.3、使用std::fill初始化列表

#include <iostream>
#include <algorithm>  // 包含 fill 函数
 
int main() {
    int arr[5];
    
    // 使用 fill 初始化数组,填充每个元素为 7
    std::fill(std::begin(arr), std::end(arr), 7);
    
    // 输出数组内容
    for (int i = 0; i < 5; i++) {
        std::cout << arr[i] << " ";
    }
 
    return 0;
}
 
// std::fill{7, 7, 7, 7, 7}

1.4、使用循环初始化列表

#include <iostream>
 
int main() {
    int arr[5];
 
    // 使用循环初始化数组
    for (int i = 0; i < 5; i++) {
        arr[i] = i * 2;  // 填充为偶数
    }
 
    // 输出数组内容
    for (int i = 0; i < 5; i++) {
        std::cout << arr[i] << " ";
    }
 
    return 0;
}

2、初始化二维数组

2.1、使用列表初始化数组

#include <iostream>
 
int main() {
    // 初始化二维数组
    int arr[3][2] = {{1, 2}, {3, 4}, {5, 6}};
    
    // 输出二维数组内容
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }
 
    return 0;
}

2.2、 初始化部分二维数组

#include <iostream>
 
int main() {
    // 只初始化部分元素,其他元素将被填充为 0
    int arr[3][3] = {{1, 2}, {3, 4}};
    
    // 输出二维数组内容
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }
 
    return 0;
}

2.3、循环初始化二维数组

#include <iostream>
 
int main() {
    int arr[3][3];
    
    // 使用循环初始化二维数组
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            arr[i][j] = i * 3 + j;  // 使用索引填充
        }
    }
 
    // 输出二维数组内容
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }
 
    return 0;
}

3、用new动态初始化数组

#include <iostream>
 
int main() {
    int* arr = new int[5];  // 动态分配大小为 5 的数组
 
    // 初始化数组
    for (int i = 0; i < 5; i++) {
        arr[i] = i * 2;  // 填充偶数
    }
 
    // 输出动态数组内容
    for (int i = 0; i < 5; i++) {
        std::cout << arr[i] << " ";
    }
 
    delete[] arr;  // 释放动态分配的数组内存
    return 0;
}

4、 C++11 中的初始化方式

在 C++11 及以上版本中提供了更灵活的数组类型。

4.1、使用std::array静态初始化数组

#include <iostream>
#include <array>
 
int main() {
    std::array<int, 5> arr = {1, 2, 3, 4, 5};  // 使用 std::array 初始化
 
    // 输出 std::array 内容
    for (int i = 0; i < 5; i++) {
        std::cout << arr[i] << " ";
    }
 
    return 0;
}

4.2、使用 std::vector动态初始化数组

#include <iostream>
#include <vector>
 
int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};  // 使用 std::vector 初始化
 
    // 输出 std::vector 内容
    for (size_t i = 0; i < vec.size(); i++) {
        std::cout << vec[i] << " ";
    }
 
    return 0;
}

以上就是C++初始化数组的几种常见方法(简单易懂)的详细内容,更多关于C++初始化数组的资料请关注脚本之家其它相关文章!

相关文章

  • Linux网络编程之socket文件传输示例

    Linux网络编程之socket文件传输示例

    这篇文章主要介绍了Linux网络编程之socket文件传输示例,对于基于Linux平台的C程序员来说有一定的借鉴价值,需要的朋友可以参考下
    2014-08-08
  • 怎么用C++提取任意一张图片的特征(从内存读取数据)

    怎么用C++提取任意一张图片的特征(从内存读取数据)

    这篇文章主要介绍了用C++提取任意一张图片的特征(从内存读取数据)的相关资料,需要的朋友可以参考下
    2017-05-05
  • C语言超详细讲解宏与指针的使用

    C语言超详细讲解宏与指针的使用

    宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的替换。要想突破C语言的学习,对指针的掌握是非常重要的,本文将具体针对宏与指针的基础做详尽的介绍
    2022-06-06
  • C++11 lambda表达式在回调函数中的使用方式

    C++11 lambda表达式在回调函数中的使用方式

    这篇文章主要介绍了C++11 lambda表达式在回调函数中的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C语言数组指针的小例子

    C语言数组指针的小例子

    这篇文章介绍了,用c语言实现的一个数组指针的小例子,有需要的朋友可以参考一下
    2013-07-07
  • C/C++读取大文件数据方式详细讲解

    C/C++读取大文件数据方式详细讲解

    这篇文章主要介绍了C语言/C++读取大文件数据的完整方式过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • 基于C++类型重定义的使用详解

    基于C++类型重定义的使用详解

    本篇文章是对C++中类型重定义的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Qt中互斥锁QMutex和QMutexLocker的使用

    Qt中互斥锁QMutex和QMutexLocker的使用

    本文主要介绍了Qt中互斥锁QMutex和QMutexLocker的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • C++数据结构与算法之双缓存队列实现方法详解

    C++数据结构与算法之双缓存队列实现方法详解

    这篇文章主要介绍了C++数据结构与算法之双缓存队列实现方法,结合实例形式分析了双缓存队列的原理、实现方法与相关注意事项,需要的朋友可以参考下
    2017-08-08
  • C++无痛实现日期类的示例代码

    C++无痛实现日期类的示例代码

    凡是要写类必须要提到六大默认成员(六位大爷):构造函数、析构函数、拷贝构造函数、赋值重载函数、取地址重载函数(包括const对象和普通对象);那么这次的日期类又需要伺候哪几位大爷呢?本文就来详细说说
    2022-10-10

最新评论