Как использовать memset в 2-й динамически генерировать массив в C ++? - PullRequest
1 голос
/ 10 апреля 2020

Я создал динамический c 2-й массив, но я не знаю, как использовать memset в этом? Вот кусок моего кода -

ll **arr;
arr = new ll*[n];
for(int i=0; i<n; i++){
    arr[i] = new ll[x];
}

Я делаю memset(arr, -1, ((n*x))* sizeof(*arr)), но он не работает. кто-нибудь может помочь?

1 Ответ

0 голосов
/ 10 апреля 2020

Вы не разместили двумерный массив. Вы выделили одномерный массив указателей, каждый из которых указывает на одномерный массив элементов типа (как я полагаю) long long int.

Так что вам нужно вызывать memset для каждого такого выделенного Отдельно одномерный массив.

Вот демонстрационная программа.

#include <iostream>
#include <cstring>

int main() 
{
    size_t n = 0;

    std::cout << "Enter the size of a matrix: ";

    if ( std::cin >> n && n != 0 )
    {
        long long int **a = new long long int * [n];

        for ( size_t i = 0; i < n; i++ )
        {
            a[i] = new long long int [n];
            std::memset( a[i], -1, n * sizeof( long long int ) );
        }

        for ( size_t i = 0; i < n; i++ )
        {
            for ( size_t j = 0; j < n; j++ )
            {
                std::cout << a[i][j] << ' ';
            }
            std::cout << '\n';
        }

        for ( size_t i = 0; i < n; i++ )
        {
            delete [] a[i];
        }
        delete [] a;
    }

    return 0;
}

Его вывод может выглядеть как

Enter the size of a matrix: 5
-1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 
-1 -1 -1 -1 -1 

Программа будет работать для 2-х внутренних дополнений представление целых чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...