#cpp
Сейчас я определяю количество элементов в статическом массиве с помощью следующего
выражения:
sizeof(Array)/sizeof(Array[0])
Я слышал, что существует стандартный макрос для этого действия, скажите как он называется
или, может быть, существует более простой способ?
Ответы
Ответ 1
templateinline size_t arraySize(const T (&arr)[n]) { return n; } По сравнению с упомянутым макросом минусов, я лично, не вижу. Любой компилятор подобный вызов заоптимизирует просто в константу. Есть ли какие-то плюсы? Думаю, да. Макросы — это штука такая довольно мутная. С ними очень легко ошибиться (см. комментарии к предыдущему ответу). Один раз определённый макрос будет потом болтаться и там, где его можно не ожидать. Эта же штука ведёт себя как любая другая функция. Её даже IntelliSense видит и автодополняет! :). Ответ 2
В MSVC есть отличный макрос: _countof(). Он как раз и разворачивается в конструкции вида sizeof(Array)/sizeof(Array[0])Ответ 3
Возможно что и существует подобный макрос в какой нибудь библиотеке, но в Стандарте разумеется такого нет. Да и что мешает написать самому макрос раз так нужен!? PS: для сишных массивов с постоянной длиной более правильного способа не существует.Ответ 4
#includeusing namespace std; int main(){ int n=3; int v[n]; cout<
Комментариев нет:
Отправить комментарий