Вам нужно пройтись по массиву и установить для каждого элемента float
значение std::numeric_limits<float>::max()
в limits
... вы не можете использовать memset
для этого, поскольку он устанавливает каждый байт в буфер памяти, а не многобайтовое значение, например, число с плавающей запятой и т. д., для определенного значения.
Таким образом, вы получите код, который выглядит следующим образом, поскольку вы используете только один массив для своей матрицы (т. Е. Вам не нужен второй цикл for):
#include <limits>
float* matrix = new float[N*N];
for (int i=0; i < N*N; i++)
{
matrix[i] = std::numeric_limits<float>::max();
}
Вторая огромная проблема с вашим запросом состоит в том, что memset
принимает целочисленный тип для значения, которое должно быть установлено для каждого байта, поэтому вам нужно будет получить фактическую битовую комбинацию максимального значения с плавающей запятой и использовать что в качестве входа для memset
. Но даже это не сработает, поскольку memset
может установить для каждого байта в буфере памяти только заданное значение, поэтому, если вы передадите 32-разрядное целочисленное значение, представляющее значение с плавающей запятой, в memset
, он будет использовать только младшие 8 бит ... так что, в конце концов, это не просто то, что мы не советуем вам делать, но это невозможно для способа реализации memset
. Вы просто не можете использовать memset
для инициализации буфера памяти многобайтовых типов с определенным значением, если только вы не хотите обнулять значения или вы делаете какой-то странный хак, который позволяет вам записать одно и то же значение для всех байты, которые составляют многобайтовый тип данных.