为什么我们不能像使用 1D 和 2D 数组一样使用 std::fill()?

Why can't we use std::fill() the same way for 1D and 2D arrays?

本文关键字:fill 一样 std 数组 不能 我们 1D 2D 为什么      更新时间:2023-10-16

我已经看到,如果我们有一个 1D 数组 int A[10],那么要用任意值填充它,比如 0,我们使用 std::fill(A, A+10, 0)

对于 2D 数组 B[10][10],我们用 0 填充它: std::fill(&B[0][0], &B[0][0] + sizeof(B), 0

但是,我不明白为什么我们不能将 1D 数组 A 填充为: std::fill(&A[0], &A[0] + sizeof(A), 0

有人可以解释一下吗?

sizeof(T) 返回类型为 T 的字节数。 如果T是数组类型(如果您不考虑T[0] char类型),则它不会返回项数。

对于数组中的项目数,它将是 sizeof(T) / sizeof(T[0]) ,因此fill函数将是这样的:

std::fill(&A[0], &A[0] + sizeof(A)/sizeof(A[0]), 0)