2015-02-10 2 views
0

Скажем, у меня есть круговая очередь, реализованная с использованием массива размера 10. Без использования функции sizeof в C++, как бы можно было найти количество элементов в массиве или в другом слова - количество индексов, которые были использованы. Я считаю, используя модульную математику, так как я знаю первый и последний индексы, но как именно это можно было бы включить в функцию, которая возвращает этот размер?Поиск количества элементов в круговой очереди

+2

Не проживая в 80-х годах и используя 'std :: array' или' std :: vector'. – rightfold

ответ

1

Вы не можете найти размер массива C-стиля, отличного от sizeof; это одна из причин существования этого оператора. Модуль обязательно вам не поможет.

Теперь, для класса шаблонов C++ std::array, вы можете просто использовать метод size().

EDIT: если у вас уже есть последний «возможный» индекс (первый - всегда 0), вы можете просто использовать этот плюс один как длину.

1

Похоже, вы знаете размер массива, но хотите знать, сколько индексов в массиве заполнено фактическим значением, которое не является NULL или значением по умолчанию. Если это так, в худшем случае вам придется перебирать массив и проверять каждый индекс.

Вы всегда можете сделать свою жизнь немного легче, выполняя небольшую бухгалтерскую отчетность и отслеживая населенный индекс. Каждый раз, когда вы добавляете значение в массив, увеличивайте число. Уменьшите счет при удалении. Если вы обновляете уже заполненный индекс, оставьте счет в одиночку.