Ich habe ein 2D-Array dynamisch erstellt.Wie memset oder fill_n verwenden, um ein dynamisches zweidimensionales Array in C++ initialisieren
int **abc = new int*[rows];
for (uint32_t i = 0; i < rows; i++)
{
abc[i] = new int[cols];
}
Ich mag das Array mit einem gewissen Wert füllen (zB 1). Ich kann über jeden Gegenstand schleifen und es tun.
Aber gibt es einen einfacheren Weg. Ich versuche memset
und std::fill_n
wie in this post erwähnt zu verwenden.
std::fill_n(abc, rows * cols, 1);
memset(abc, 1, rows * cols * sizeof(int));
Mit memset stürzt mein Programm ab. Die Verwendung von fill_n gibt einen Kompilierungsfehler.
invalid conversion from 'int' to 'int*' [-fpermissive]
Was mache ich hier falsch?
zurück zu C Dropping könnte eine Option sein: 'int (* abc) [Spalten] = malloc (rows * sizeof (* abc)); memset (abc, 1, rows * sizeof (* abc)); 'ist legal C seit C99, wird aber in C++ in absehbarer Zeit nicht mehr möglich sein. – cmaster