Допустим, есть матрица
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){}
Можно ли получить количество строк и столбцов матрицы, чтобы не передавать их постоянно в параметры функции?
В C и C++ такие возможности не предусмотрены, т.к. "голые" массивы хранятся просто в виде последовательностей ячеек в памяти без какого-либо признака окончания.
Последуйте авторитетному мнению Бьерна Страуструпа и других гуру C++ – используйте std:array
для последовательностей неизменяемой длины и std:vector
для последовательностей, длина которых может динамически меняться в ходе работы программы. Эти контейнеры поддерживают метод подсчёта длины, а также множество других удобных и безопасных функций.
Есть такое понятие, как структура. Это данные как либо связанные между собой.
typedef
struct {
int * * row ;
size_t width ;
size_t height ;
} Matr ;
Её и передавайте.
void func(Matr & matrix){ .. }
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
что означает это строка кода *(*(p = new double*) = new double) = 2;
А нет ли в Windows ничего такого, похожего на сигналы в POSIX?
Установил wxWidget, решил запустить пример в CMakeВсё настроил, всё подключил