Daily bit(e) C++. std::bitset
Добавлено 30 июля 2026 в 00:39
Daily bit(e) C++ 47, контейнер для хранения на битовом уровне: std::bitset.

std::bitset – это контейнер со статическим размером для хранения битов.
Данный контейнер предлагает побитовый доступ, булевы операции редукции (all, any, none), побитовые операции (AND, OR, XOR, NOT) между контейнерами std::bitset одинакового размера, побитовые сдвиги и манипуляции с состоянием (установка, сброс, инверсия).
Начиная с C++23, std::bitset полностью constexpr.
#include <bitset>
std::bitset<16> data;
// нулевой индекс указывает на наименьший значащий бит
data[0] = 1;
// data.to_ullong() == 1
// установить все биты в 1
data.set();
// data.to_ullong() == 65535
// инвертировать все биты (установить их в 0)
data.flip();
// data.to_ullong() == 0
data[0] = 1;
data[2] = 1;
data[4] = 1;
std::bitset<16> other;
other[0] = 1;
other[2] = 1;
// побитовое И
data &= other;
// data.to_ullong() == 5
// any_of
bool test = data.any();
// test == true
// счетчик битов, равных 1
size_t cnt = data.count();
// cnt == 2
// поддерживает сравнение, но не упорядочивание
bool same = (data == other);
// same == true
