我如何使用fill_n()对以下数组

how do i use fill_n() on the following array?

本文关键字:数组 何使用 fill      更新时间:2023-10-16

我有这个数组

 unsigned char        bit_table_[10][100];

用0填充它的正确方法是什么?I tried

std::fill_n(bit_table_,sizeof(bit_table_),0x00);

初始化:

unsigned char bit_table_[10][100] = {};

如果它是类成员,可以在构造函数中初始化它,如下所示:

MyClass::MyClass()
    :bit_table_()
{}
否则

:

std::fill_n(*bit_table_,sizeof(bit_table_),0);

bit_table_的类型是unsigned char [10][100],它将衰变(即编译器允许将其隐式转换为)为unsigned char (*)[100],即指向一个包含100个unsigned chars的数组的指针。

std::fill_n(bit_table_, ...)被实例化为:std::fill_n(unsigned char (*)[100], ...),这意味着它需要一个unsigned char [100]类型的值来初始化bit_table_0不能转换为该类型,因此编译失败。

另一种考虑方法是,处理迭代器的STL函数只处理单一维度。如果你传入一个多维结构,那些STL函数将只处理一个维度。

最终,你不能这样做;没有办法给数组类型赋值。也就是说,既然你不能这样做:

char table[100];
char another_table[100]= { };
table= another_table;

不能在多维数组上使用std::fill_n

您也可以尝试用unsigned char bit_table_[10][100]= { 0 }填充0。

int main()
{
    unsigned char        bit_table_[10][100]= { 0 };
    return 0;
}