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

Регистрация
8 Ноя 2012
Сообщения
92
Репутация
0
Спасибо
0
Монет
0
есть массив

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.

Помогите, опять, пожалуйста :}
 
Вы должны сами контролировать информацию о массиве. Потому что любая информация занимает место. Если вам нужно знать, какие места массива были заполнены - нужен второй массив, который будет хранить эту информацию. Если хотите знать размер - нужна переменная, которая будет его хранить. Хотите знать дату изменения каждого элемента - нужен еще один массив с датами)
А размер это обычно задаваемая программистом некая граница, за которой могут быть данные не относящиеся к этому массиву. И попытка доступа к которой может привести к ошибке. Как огород - чтобы отличить свой огород от соседского - ставят забор или столбики.
 
В массиве arr[100][2] всегда 200 элементов. А заполнены они мусором или тем, что ты загрузил в них явно, знаешь только ты.
Если хочешь узнать, сколько в нем элементов загружено полезным содержимым, надо вести счет при их загрузке. Внутри массива полезное содержимое ничем не отличается от мусора.
 
ЗАЧЕМ ты в C++ используешь short arr[100][2]? Чем тебя vector<vector<short>> не устраивает? - намного более умный и удобный.

Пока ты будешь использовать механизмы языка C (а "массивы" в C++ полностью заимствованы из C), тебе придётся вручную всё учитывать. Хочешь избавить себя от рутины - используй высокоуровневые возможности C++.
 
Длина двумерного массива в 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[0] != 0 && arr[1] != 0) {
count++;
}
}

// выводим количество заполненных элементов
std::cout << "Количество заполненных элементов: " << count << std::endl;
В этом примере я создал массив arr размером 100 на 2, заполнили его некоторыми элементами и перебрали все элементы, чтобы узнать количество заполненных элементов. Количество заполненных элементов выводится на экран.
 
Назад
Сверху