Как получить кол-во элементов массива

72
05 мая 2021, 10:00

Допустим, есть матрица

int** matrix = new int*[rows];
for (int i = 0; i < rows; i++)
{
    matrix[i] = new int[columns];
}
for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < columns; j++)
    {
        matrix[i][j] = 0 + rand() % 15;
    }
}

и есть функция

void func(int**& matrix){}

Можно ли получить количество строк и столбцов матрицы, чтобы не передавать их постоянно в параметры функции?

Answer 1

В C и C++ такие возможности не предусмотрены, т.к. "голые" массивы хранятся просто в виде последовательностей ячеек в памяти без какого-либо признака окончания.

Последуйте авторитетному мнению Бьерна Страуструпа и других гуру C++ – используйте std:array для последовательностей неизменяемой длины и std:vector для последовательностей, длина которых может динамически меняться в ходе работы программы. Эти контейнеры поддерживают метод подсчёта длины, а также множество других удобных и безопасных функций.

Answer 2

Есть такое понятие, как структура. Это данные как либо связанные между собой.

typedef
struct {
int * * row ;
size_t width ;
size_t height ;
} Matr ;

Её и передавайте.

void func(Matr & matrix){ .. }
READ ALSO
что означает это строка кода *(*(p = new double*) = new double) = 2;

что означает это строка кода *(*(p = new double*) = new double) = 2;

что означает это строка кода *(*(p = new double*) = new double) = 2;

95
Есть ли в Windows сигналы похожие на те что в POSIX?

Есть ли в Windows сигналы похожие на те что в POSIX?

А нет ли в Windows ничего такого, похожего на сигналы в POSIX?

66
Не запускается проект CMake

Не запускается проект CMake

Установил wxWidget, решил запустить пример в CMakeВсё настроил, всё подключил

92