当前位置: 首页 > article >正文

「C/C++」C/C++ 数组初始化的几种方法

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「C/C++」C/C++程序设计
📚全部专栏
「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合
「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明

目录

      • 1. 使用全局或静态数组
      • 2. 使用`std::fill`
      • 3. 使用C++11中的花括号初始化
      • 4. 使用`std::vector`
      • 5. 使用`memset`

在C++中,有几种快速将数组初始化为0的方法。以下是一些常见的方法:

1. 使用全局或静态数组

全局数组和静态数组在声明时会自动初始化为0。

#include <iostream>

int arr[10];  // 全局数组,自动初始化为0

int main() {
    for (int i = 0; i < 10; ++i) {
        std::cout << arr[i] << " ";
    }
    return 0;
}

2. 使用std::fill

如果你使用的是C++标准库,std::fill是一个很好的选择。你需要包含头文件<algorithm>

#include <iostream>
#include <algorithm>

int main() {
    int arr[10];
    std::fill(arr, arr + 10, 0);  // 使用std::fill初始化数组为0

    for (int i = 0; i < 10; ++i) {
        std::cout << arr[i] << " ";
    }
    return 0;
}

3. 使用C++11中的花括号初始化

在C++11及以后的版本中,你可以使用花括号初始化来初始化数组。

#include <iostream>

int main() {
    int arr[10] = {0};  // 第一个元素初始化为0,其余元素自动初始化为0

    for (int i = 0; i < 10; ++i) {
        std::cout << arr[i] << " ";
    }
    return 0;
}

4. 使用std::vector

虽然这不是直接对数组的操作,但使用std::vector通常更方便,而且也能很容易地初始化为0。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec(10, 0);  // 创建一个大小为10的vector,并初始化为0

    for (int i = 0; i < 10; ++i) {
        std::cout << vec[i] << " ";
    }
    return 0;
}

5. 使用memset

对于原生数组,你还可以使用C语言中的memset函数。这需要包含头文件<cstring>

#include <iostream>
#include <cstring>

int main() {
    int arr[10];
    memset(arr, 0, sizeof(arr));  // 使用memset初始化数组为0

    for (int i = 0; i < 10; ++i) {
        std::cout << arr[i] << " ";
    }
    return 0;
}

选择哪种方法取决于你的具体需求和编程风格。对于现代C++编程,使用std::vector或C++11的花括号初始化通常是更安全和更方便的选择。


在这里插入图片描述


http://www.kler.cn/a/387658.html

相关文章:

  • 基于Python的社交音乐分享平台
  • springboot028基于springboot的房屋租赁系统
  • 【优选算法 — 滑动窗口】最大连续1的个数 将 x 减到0的最小操作数
  • Android的BroadcastReceiver
  • Linux实验day05-Linux磁盘分区的规则、磁盘分区、格式化、挂载、df、du命令
  • 【AI日记】24.11.09 我对贫困问题的一些思考
  • 《深入浅出Apache Spark》系列②:Spark SQL原理精髓全解析
  • UE5材质篇 2 ICE 冰材质尝试
  • 前端前置——ajax
  • 前端递归获取树(不限制层级)结构下的某个字段并组成数组返回
  • WPF 打包
  • Vue前端开发之自定义动画
  • 如何在 Android 14 中调整字体最大 大小 和 显示最大一格 大小
  • 【AI技术】Edge-TTS 国内使用方法
  • 问题排查:C++ exception with description “getrandom“ thrown in the test body
  • Ubuntu实现双击图标运行自己的应用软件
  • Windows系统中Oracle VM VirtualBox的安装
  • 2024年第四届“网鼎杯”网络安全比赛---朱雀组Crypto- WriteUp
  • 计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
  • 个性化培训:扫码分组指南
  • ResNet 残差网络 (乘法→加法的思想 - 残差连接是所有前沿模型的标配) + 代码实现 ——笔记2.16《动手学深度学习》