Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

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

#cpp


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

sizeof(Array)/sizeof(Array[0])


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


Ответы

Ответ 1



template inline size_t arraySize(const T (&arr)[n]) { return n; } По сравнению с упомянутым макросом минусов, я лично, не вижу. Любой компилятор подобный вызов заоптимизирует просто в константу. Есть ли какие-то плюсы? Думаю, да. Макросы — это штука такая довольно мутная. С ними очень легко ошибиться (см. комментарии к предыдущему ответу). Один раз определённый макрос будет потом болтаться и там, где его можно не ожидать. Эта же штука ведёт себя как любая другая функция. Её даже IntelliSense видит и автодополняет! :).

Ответ 2



В MSVC есть отличный макрос: _countof(). Он как раз и разворачивается в конструкции вида sizeof(Array)/sizeof(Array[0])

Ответ 3



Возможно что и существует подобный макрос в какой нибудь библиотеке, но в Стандарте разумеется такого нет. Да и что мешает написать самому макрос раз так нужен!? PS: для сишных массивов с постоянной длиной более правильного способа не существует.

Ответ 4



#include using namespace std; int main(){ int n=3; int v[n]; cout<

Комментариев нет:

Отправить комментарий