C/C++

Как узнать длину двумерного массива в c++?

есть массив
short arr[100][2];

и когда я хочу узнать его длину:
sizeof(arr)/sizeof(arr[0])

мне выдает 100, что логично, ведь я задаю изначальный размер, но как мне узнать сколько в нем элементов в данный момент?


типа
arr[0][0]=1;
arr[0][1]=1;

arr[1][0]=1;
arr[1][1]=1;

при этом выдать должен 2.
Помогите, опять, пожалуйста :}
ЗАЧЕМ ты в C++ используешь short arr[100][2]? Чем тебя vector<vector<short>> не устраивает? - намного более умный и удобный.

Пока ты будешь использовать механизмы языка C (а "массивы" в C++ полностью заимствованы из C), тебе придётся вручную всё учитывать. Хочешь избавить себя от рутины - используй высокоуровневые возможности C++.
Николай Остроухов
Николай Остроухов
89 942
Лучший ответ
Олег Волков я только начал изучать с++, о векторах мало знаю, но обязательно учту, благодарю
В массиве arr[100][2] всегда 200 элементов. А заполнены они мусором или тем, что ты загрузил в них явно, знаешь только ты.
Если хочешь узнать, сколько в нем элементов загружено полезным содержимым, надо вести счет при их загрузке. Внутри массива полезное содержимое ничем не отличается от мусора.
Олег Волков ведь поэтому используют вектора? они как массивы в высших языках, нет?
Вы должны сами контролировать информацию о массиве. Потому что любая информация занимает место. Если вам нужно знать, какие места массива были заполнены - нужен второй массив, который будет хранить эту информацию. Если хотите знать размер - нужна переменная, которая будет его хранить. Хотите знать дату изменения каждого элемента - нужен еще один массив с датами)
А размер это обычно задаваемая программистом некая граница, за которой могут быть данные не относящиеся к этому массиву. И попытка доступа к которой может привести к ошибке. Как огород - чтобы отличить свой огород от соседского - ставят забор или столбики.
Длина двумерного массива в C++ зависит от того, как вы его определили и как вы его заполняете. Если вы заранее знаете, что будете заполнять массив с заданным количеством строк и столбцов, то размер массива задается в его определении.

Однако, если вы хотите узнать количество элементов в массиве, который уже был заполнен, то для этого вам нужно использовать переменную, которая будет хранить количество заполненных элементов. Вы можете использовать цикл для перебора всех строк и столбцов массива и увеличивать значение переменной на 1 каждый раз, когда вы обнаруживаете заполненный элемент.

Вот пример кода на C++, который показывает, как узнать количество заполненных элементов в двумерном массиве:
Длина двумерного массива в C++ зависит от того, как вы его определили и как вы его заполняете. Если вы заранее знаете, что будете заполнять массив с заданным количеством строк и столбцов, то размер массива задается в его определении.

Однако, если вы хотите узнать количество элементов в массиве, который уже был заполнен, то для этого вам нужно использовать переменную, которая будет хранить количество заполненных элементов. Вы можете использовать цикл для перебора всех строк и столбцов массива и увеличивать значение переменной на 1 каждый раз, когда вы обнаруживаете заполненный элемент.

Вот пример кода на C++, который показывает, как узнать количество заполненных элементов в двумерном массиве:

short arr[100][2];
int count = 0;

// заполняем массив
arr[0][0] = 1;
arr[0][1] = 1;
arr[1][0] = 1;
arr[1][1] = 1;

// перебираем все элементы массива и увеличиваем счетчик, если элемент заполнен
for(int i = 0; i < 100; i++) {
if(arr[i][0] != 0 && arr[i][1] != 0) {
count++;
}
}

// выводим количество заполненных элементов
std::cout << "Количество заполненных элементов: " << count << std::endl;
В этом примере я создал массив arr размером 100 на 2, заполнили его некоторыми элементами и перебрали все элементы, чтобы узнать количество заполненных элементов. Количество заполненных элементов выводится на экран.
HS
Hamza Subhonov
3 423
Олег Волков спасибо большущее! ))