Ho un array 2D creato dinamicamente.Come usare memset o fill_n per inizializzare una matrice bidimensionale dinamica in C++
int **abc = new int*[rows];
for (uint32_t i = 0; i < rows; i++)
{
abc[i] = new int[cols];
}
Voglio riempire l'array con qualche valore (ad esempio 1). Posso scorrere su ogni oggetto e farlo.
Ma c'è un modo più semplice. Sto cercando di utilizzare memset
e std::fill_n
come indicato in this post.
std::fill_n(abc, rows * cols, 1);
memset(abc, 1, rows * cols * sizeof(int));
L'utilizzo di memset causa il blocco del programma. L'uso di fill_n dà un errore di compilazione.
invalid conversion from 'int' to 'int*' [-fpermissive]
Cosa sto facendo di sbagliato qui?
Dropping torna a C potrebbe essere un'opzione: 'int (* abc) [cols] = malloc (rows * sizeof (* abc)); memset (abc, 1, rows * sizeof (* abc)); 'è legale C dal C99, ma non sarà possibile in C++ in qualunque momento presto. – cmaster