私は動的に作成された2D配列を持っています。C++で動的二次元配列を初期化するためにmemsetまたはfill_nを使用する方法
int **abc = new int*[rows];
for (uint32_t i = 0; i < rows; i++)
{
abc[i] = new int[cols];
}
私はいくつかの値(1と言う)で配列を埋めるためにしたいです。私は各項目をループしてやることができます。
しかし、より簡単な方法があります。私はthis postで述べたようにmemset
とstd::fill_n
を使用しようとしています。
std::fill_n(abc, rows * cols, 1);
memset(abc, 1, rows * cols * sizeof(int));
memsetを使用すると、プログラムがクラッシュします。 fill_nを使用すると、コンパイルエラーが発生します。
invalid conversion from 'int' to 'int*' [-fpermissive]
私はここで間違っていますか?
が戻ってCに落とす選択肢かもしれません。 'int(* abc)[cols] = malloc(rows * sizeof(* abc)); memset(abc、1、rows * sizeof(* abc)); 'はC99以降は合法ですが、C++ではすぐには使用できません。 – cmaster