Форум программистов, компьютерный форум CyberForum.ru

A range-based for statement - C++

Восстановить пароль Регистрация
 
LosAngeles
Заблокирован
24.09.2011, 17:48     A range-based for statement #1
я вот чё то не понимаю - когда вызываем оператор delete для указателя на массив, он каким то образом узнаёт его размер и всё грамотно удаляет. А почему не сделали так чтобы, sizeof() тоже возвращал бы размер массива и почему нельзя применять это новую фичу for(... : ...) для указателей на массив? Размер же хранится где-то, в чём проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2011, 17:48     A range-based for statement
Посмотрите здесь:

If else statement C++
If else statement (continue) C++
C++ range-based for не работает
загадки range-based C++
Range-based for C++
Range-based for C++
C++ Range-based for trouble
Range-based for C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
24.09.2011, 21:50     A range-based for statement #2
а) Размер хранится только при выделении массива через new, там он записывается специальным образом, зависящим от реализации (т.е., может быть разным на разных компиляторах).
б) sizeof без малейших проблем определяет размер массива.
в) Проблемы с определением начинаются, когда вместо массива (чей размер заранее известен компилятору) пользуются указателем на первый элемент. Так уж исторически сложилось ещё во времена Си, в погоне за максимальной эффективностью: местоположение массива отдельно, размер отдельно. Тем более, что иногда размер в явном виде знать не надо.
г) Пользоваться надо не массивами, а контейнерами. Например, тем же вектором, который отлично знает свой размер и не менее отлично совместим с range-based for.
Yandex
Объявления
24.09.2011, 21:50     A range-based for statement
Ответ Создать тему

Метки
c++11 for statement
Опции темы

Текущее время: 20:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru