C++ 将动态二维数组中的所有值设置为设定值

C++ 将动态二维数组中的所有值设置为设定值,c++,arrays,initialization,C++,Arrays,Initialization,我必须设置一个动态二维数组,它是x行数乘以y列数。此数组已声明为枚举类型,我想将所有值初始化为已知的空值。有没有一种方法可以用一个命令来实现这一点,或者我需要循环遍历每一行/每一列,并以这种方式进行设置。我知道静态数组可以作为数组[][]={EMPTY}来完成,但是我无法让这个方法工作 status ** seats; seats = new status* [NO_OF_ROWS];// declare array with NO_OF_ROWS for (row = 0; row <

我必须设置一个动态二维数组,它是x行数乘以y列数。此数组已声明为枚举类型,我想将所有值初始化为已知的空值。有没有一种方法可以用一个命令来实现这一点,或者我需要循环遍历每一行/每一列,并以这种方式进行设置。我知道静态数组可以作为数组[][]={EMPTY}来完成,但是我无法让这个方法工作

status ** seats;

seats = new status* [NO_OF_ROWS];// declare array with NO_OF_ROWS
for (row = 0; row < NO_OF_ROWS; row++)
   seats[row] = new status[NO_OF_SEATS]; 
状态**席位;
席位=新状态*[无行];//声明没有\u行的数组
for(行=0;行<行中无行;行++)
席位[世界其他地区]=新状态[无席位];
是:


然后大步访问它,即
(i,j)
第个座位是
座位[j+NO\u OF_seats*i]

您可以尝试使用
memset
——正如您所知,C中的数组在内部定义为一个连续的内存块<另一方面,code>memset是一种用特定值填充特定内存块的函数

现在,由于您的二维数组是不连续的(因为您有一个指针数组),您不能只调用一次“memset”,但至少可以对每一行调用它,这意味着您将多次调用它

它应该类似于此(注意,可能需要一些铸件,并且我的C++也有点生锈):

for(行=0;行<没有行;行++)
{
席位[世界其他地区]=新状态[无席位];
memset(席位[行],空,无席位*sizeof(状态));
}

为什么不改用矢量呢?虽然它的语法看起来很吓人,但在理解了逻辑之后就很容易了

首先添加向量库:

#include <vector>
我希望这能有所帮助

std::vector<status> seats(NO_OF_ROWS * NO_OF_SEATS);
for (row = 0; row < NO_OF_ROWS; row++)
{
    seats[row] = new status[NO_OF_SEATS]; 
    memset(seats[row],EMPTY,NO_OF_SEATS*sizeof(status));
}
#include <vector>
vector<vector<int> > array(4,vector<int>(3));
vector<vector<int> > array(4,vector<int>(3,-1));