![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
||
|
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
В коде несколько булеановских переменных. Как их лучше реализовать?
|
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 15 Всего: 124 |
Это зависит от того, для чего они используются.
В Вашем случае — для чего? Общего ответа, конечно же, нет. В одном случае удобнее флаги, в другом — несколько переменных. Всё зависит от специфики кода, приведите его... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: 1 Всего: 3 |
сначала с масками работать проблематично, но потом привыкаешь. Плюс этого состои в том, что ты всегда можешь перезадать маску, она в основном ведь объявляется так: #define maska 0x7E
-------------------- я не гольфист - я хоккеист |
|||
|
||||
slava72 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 23.6.2006 Репутация: 1 Всего: 1 |
Есть еще вариант битовых полей ;)
В этом случае не нужно думать о масках в побитовых операциях 2takedo для целочисленных констант лучше enum-ы, чем #define |
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Почти всегда стоит выбирать
Аргументация: проще сопровождение -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Как вариант - std::bitset. И работать приятно, и пакерится.
|
|||
|
||||
Никто |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Можно представить переменную в виде последовательности битов,при этом экономится память.
--------------------
|
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Меня интересует вот что:
Что выполнится быстрее? А если переменных будет 8? Что быстрее: b|=1 или b=1 b|=~1 или b=0 (b&1) или (b) А если в первой функции поставить DWORD вместо BYTE, а во второй оставить всё как есть? Выигрываю ли я, задавая общую переменную? |
|||
|
||||
slava72 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 23.6.2006 Репутация: 1 Всего: 1 |
быстрее будет int (по определению ))
А код в том виде, в котором он есть a)-неэффективен б)-некорректен (не переносим) неэффективен - для char (а возможно и для wchar_t) более быстро проверять по таблице не переносим: Об этом явно говорит Страус - в диапазоне [A..Z] могут быть лишние символы и/или потерятся что-то нужное чем не устраивают функции isalpha/isdigit ? или их самописные аналоги ;) |
|||
|
||||
UnrealMan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
А если быть реалистом, а не теоретиком-романтиком: много ли кодировок, где латинские буквы располагаются не по порядку или с разрывами? Можешь привести в качестве примера хотя бы одну? |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 15 Всего: 124 |
||||
|
||||
UnrealMan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
||||
|
||||
UnrealMan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Мда, почитал статью и лишний раз убедился: EBCDIC – это задрипок, который почти нигде не используется.
|
|||
|
||||
Nuzur |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 4.7.2004 Репутация: нет Всего: 5 |
UnrealMan, ну рад за вас что вы наконец-то поняли
![]() А на сабж точного ответа нет, если их 2-ве то конечно отдельные переменные, если их 10000 то лучше про биты думать. ![]() -------------------- Never again... |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Да наплевать, какая реализация. Написать нормальный интерфейс в виде get\set (которые тут недавно ругали), и переписывай реализацию хоть через день, под настроение.
-------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |