Как посчитать количество элементов в массиве?
Но лучше std::array использовать вообще. У него есть метод size.
Ответ написан более трёх лет назад
Нравится 2 3 комментария

Правда так же требуется вся информация о типе массива, но в отличии от моего варианта, не скомпилируется при отсутствии этой информации. Что большой плюс.
Правда промышленная разработка на C++17 это пока только мечты. Мне бы мои легаси проекты заволочь хотя бы на 11
Vitaly @vt4a2h Куратор тега C++
Василий Мельников, ну второй вариант требует только 11го стандарта, насколько мне известно. std::array (который я и рекомендую использовать в данном случае) тоже только 11го стандарта требует.
Касательно C++17, многие компании, в том числе и наша, его уже давно используют. Два года прошло с утверждения как никак. Да и все популярные компиляторы его поддерживают.
Как посчитать кол во элементов в массиве
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Определение количества элементов в массиве
Я слышал, что существует стандартный макрос для этого действия, скажите как он называется или, может быть, существует более простой способ?
Отслеживать
4,508 21 21 серебряный знак 29 29 бронзовых знаков
задан 26 янв 2011 в 13:38
312 2 2 золотых знака 5 5 серебряных знаков 14 14 бронзовых знаков
Под массивом видимо подразумевается сишный «статический» массив, т.е. с постоянной длиной? Поскольку для динамических массивов данный способ не подойдет.
26 янв 2011 в 13:43
Да, именно статический. Исправил вопрос.
26 янв 2011 в 13:44
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
template inline size_t arraySize(const T (&arr)[n])
По сравнению с упомянутым макросом минусов, я лично, не вижу. Любой компилятор подобный вызов заоптимизирует просто в константу.
Есть ли какие-то плюсы? Думаю, да. Макросы — это штука такая довольно мутная. С ними очень легко ошибиться (см. комментарии к предыдущему ответу). Один раз определённый макрос будет потом болтаться и там, где его можно не ожидать. Эта же штука ведёт себя как любая другая функция. Её даже IntelliSense видит и автодополняет! :).
Отслеживать
ответ дан 26 янв 2011 в 15:58
4,508 21 21 серебряный знак 29 29 бронзовых знаков
Единственное отличие от макроса в том, что до C++0x эта функция не constexpr, а, значит, неприменима для создания массива того же размера, что и данный (и аналогичных задач).
26 янв 2011 в 16:15
данный шаблон не будет работать для строк объявленных в таком виде: const char* str=»str»; А если перегрузить чтобы принимались соответствующие указатели, то будет тоже неверно, поскольку можно будет передавать указатели на объекты для которых вычисление длины станет не корректным. По этому, ставлю минус за ответ. Лично мое мнение: для таких задач не надо писать ни макросы ни придумывать шаблоны, нужно просто вставлять маленький код уже упомянутый в задаче.
27 янв 2011 в 7:42
@IAZ к сожалению, для указанного Вами примера вообще никакой код работать не будет, даже упомянутый в вопросе. Длину такой строки невозможно определить в compile-time — только strlen. Не забывайте, что вопрос был именно про определение длины статических массивов.
Как посчитать количество элементов в массиве python
В питоне нету массивов. А кортежи, списки и словари есть. Бесит когда люди говорят про массивы в питоне т.к массив со своими элементами будет храниться в выделенной области памяти на компьютере, а каждый элемент списка будет храниться в разных местах памяти.
24 февраля 2022
Легко. Для этого используется функция len() . Она принимает список и возвращает количество элементов в нём.
>>> collection = [1, 2, 'hexlet'] >>> len(collection) 3
