![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Так.. Я всё равно не понял. Ты говоришь, что размер зависит от количества элементов. Для пустого множества что хранится?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
ShowMessage(IntToStr(sizeof([0, 1]))); показывает 1 байт ShowMessage(IntToStr(sizeof([]))); показывает 32 байта Добавлено через 11 минут и 33 секунды Если переменная множества создается явно, то размер всегда будет кол элементов / 8 ; Если же нет, то размер меняется по обстоятельствам. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
для пустого множества или пустого диапазона ? Это сообщение отредактировал(а) mes - 17.6.2009, 13:19 |
|||
|
||||
| Любитель |
|
||||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Ну, вот об этом и речь, те вот это никогда не происходит на самом деле:
Как я понимаю здесь просто создаётся константа типа set of 0..1 (надеюсь, синтаксис правильно написал?), соответственно размер один байт (ибо больше не надо). Если же переменную создаём - то размер константен и рассчитывается исходя из диапазона в описании типа (если указан просто тип - то весь диапазон этого типа). Для пустого множества-константы по-видимому берётся какой-то дефолтный тип.. Добавлено через 1 минуту и 23 секунды Множества. Просто я запусталя из-за слов Alexeis-а о перевыделении памяти. Думал, вдруг там всегда минимизируется используемая память (ИМХО это того не стоит в данном случае, потерь обльше чем выигрыша). |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
mes, про диапазоны тут речи нет. В паскале [0,1,2,3,4] или ['a'..'z', 'B', ' '] это множества. Просто это встроенный тип функциональность которого обеспечивается компилятором. Он не работает также как объект. Для него не создается специального объекта. Это некий тип не имеющий прообраза в асме. В С++ можно создать простой стековый объект, который будет делать тоже самое и работать также быстро, хотя получить синтаксис ['a'..'z', 'B', ' '] вряд ли удаться, но что-то аналогичное [0,1,2,3,4] запросто.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Пустое множество имеет максимальный диапазон В рантайме такого не происходит. Кол-во памяти определяется на этапе компиляции. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
На самом деле как будет ли выделение памяти или нет зависит от компилятора, судя по проведенным экспериментам все таки перераспределение не происходит... -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Сейчас запутаемся кто о чем говорит. Для переменной одного и того же типа сета, перераспределения не происходит. Это сообщение отредактировал(а) mes - 17.6.2009, 13:36 |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
||||
|
||||
| sdukshis |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 23.3.2009 Репутация: нет Всего: 1 |
Может я и неправильно понял автора, но если нужно именно это:
то
|
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
sdukshis, а если нужно будет перенести
Точно также писать ? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| sdukshis |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 23.3.2009 Репутация: нет Всего: 1 |
|
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |