Здравствуёте, у меня достаточно конкретный вопрос: Стоит ли пренебрегать переменными bool типа опционной переменной из, например, 8 бит:
class SapperFieldCellAccesser
{
// bool
bool flagged;
bool opend;
// bit
typedef char Options;
Options options;
public:
A() : flagged(false), opend(false), options(0) {}
bool BitIsFlagged() { return options & 1; }
bool BitIsOpend() { return options & 2; }
// vs
bool BoolIsFlagged() { return flagged; }
bool BoolIsOpend() { return opend; }
};
Во-первых, единая переменная с битовыми флагами позволяет легко и эффективно реализовать работу с несколькими флагами одновременно, в том числе с набором флагов, который формируется во время выполнения - через битовые маски. Для набора разрозненных полей типа bool
естественным образом это реализовать не получится.
Во-вторых, набор полей типа bool
займет больше памяти, чем "упакованная" переменная с битовыми флагами. Имеет ли это для вас значение - зависит от вашей задачи, т.е. от того, насколько массово инстанциируется данный класс.
В-третьих, не упомянут третий вариант: набор bit-fields размера 1 типа bool
. Такой вариант обладает всеми преимуществами из "во-вторых", но в то же время всеми недостатками из "во-первых".
P.S. Если вы собрались работать с битовыми флагами, то тип для хранения таких флагов надо выбирать беззнаковый. Не char
, а unsigned char
. Или uint8_t
. Или еще что-то в этом роде.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Пожалуйста не предлагайте классы или idНужно сделать так, чтобы каждый новый тэг h3 появлялся с новым размером шрифта
Есть видео уроки по созданию расширения для devtools?
На Angular5 проекте с помощью ng eject был сгенерирован файл webpackconfig