Скажем, у меня есть круговая очередь, реализованная с использованием массива размера 10. Без использования функции sizeof
в C++, как бы можно было найти количество элементов в массиве или в другом слова - количество индексов, которые были использованы. Я считаю, используя модульную математику, так как я знаю первый и последний индексы, но как именно это можно было бы включить в функцию, которая возвращает этот размер?Поиск количества элементов в круговой очереди
ответ
Вы не можете найти размер массива C-стиля, отличного от sizeof
; это одна из причин существования этого оператора. Модуль обязательно вам не поможет.
Теперь, для класса шаблонов C++ std::array
, вы можете просто использовать метод size()
.
EDIT: если у вас уже есть последний «возможный» индекс (первый - всегда 0), вы можете просто использовать этот плюс один как длину.
Похоже, вы знаете размер массива, но хотите знать, сколько индексов в массиве заполнено фактическим значением, которое не является NULL или значением по умолчанию. Если это так, в худшем случае вам придется перебирать массив и проверять каждый индекс.
Вы всегда можете сделать свою жизнь немного легче, выполняя небольшую бухгалтерскую отчетность и отслеживая населенный индекс. Каждый раз, когда вы добавляете значение в массив, увеличивайте число. Уменьшите счет при удалении. Если вы обновляете уже заполненный индекс, оставьте счет в одиночку.
Не проживая в 80-х годах и используя 'std :: array' или' std :: vector'. – rightfold