Как узнать количество элементов в массиве c
Перейти к содержимому

Как узнать количество элементов в массиве c

Array. Length Свойство

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Возвращает общее число элементов во всех измерениях массива Array.

Значение свойства

Общее число элементов во всех измерениях массива Array; ноль, если в массиве нет элементов.

Исключения

Массив является многомерным и содержит больше элементов, чем задано в MaxValue.

Примеры

В следующем примере свойство используется Length для получения общего количества элементов в массиве. Он также использует GetUpperBound метод для определения количества элементов в каждом измерении многомерного массива.

Комментарии

Получение значения данного свойства является операцией порядка сложности O(1).

Определение количества элементов в массиве

Сейчас я определяю количество элементов в статическом массиве с помощью следующего выражения:

Я слышал, что существует стандартный макрос для этого действия, скажите как он называется или, может быть, существует более простой способ?

По сравнению с упомянутым макросом минусов, я лично, не вижу. Любой компилятор подобный вызов заоптимизирует просто в константу.

Есть ли какие-то плюсы? Думаю, да. Макросы — это штука такая довольно мутная. С ними очень легко ошибиться (см. комментарии к предыдущему ответу). Один раз определённый макрос будет потом болтаться и там, где его можно не ожидать. Эта же штука ведёт себя как любая другая функция. Её даже IntelliSense видит и автодополняет! :).

Как посчитать количество элементов в массиве?

BacCM

Но лучше std::array использовать вообще. У него есть метод size.

  • Facebook
  • Вконтакте
  • Twitter

BacCM

Василий Мельников, ну второй вариант требует только 11го стандарта, насколько мне известно. std::array (который я и рекомендую использовать в данном случае) тоже только 11го стандарта требует.

Касательно C++17, многие компании, в том числе и наша, его уже давно используют. Два года прошло с утверждения как никак. Да и все популярные компиляторы его поддерживают.

BacCM

livevasiliy

Можно вот так немного перестать под 11-ый стандарт
#include < array > // удали пробелы
using namespace std;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *