Поиск идентификатора родительского процесса в Windows

std::vector< bool > упаковывает его содержимое, поэтому каждое булево значение хранится в одном бите, восемь бит - в байт. Это эффективно с точки зрения памяти, но вычислительно интенсивно, так как процессор должен выполнить арифметику для доступа к запрошенному биту. И это не работает с bool ссылкой или семантикой указателя, поскольку биты внутри байта не имеют адресов в объектной модели C ++.

Вы все же можете объявить переменную типа std::vector<bool>::reference и использовать как будто это было bool&. Это позволяет универсальным алгоритмам быть совместимыми.

std::vector< bool > bitvec( 22 );
std::vector< bool >::reference third = bitvec[ 2 ];
third = true; // assign value to referenced bit

В C ++ 11 вы можете обойти это с помощью auto и спецификатора &&, который автоматически выбирает ссылку на lvalue, привязанную к векторному элементу или ссылку rvalue, привязанную к временному.

std::vector< bool > bitvec( 22 );
auto &&third = bitvec[ 2 ]; // obtain a std::vector< bool >::reference
third = true; // assign value to referenced bit
38
задан joslinm 7 May 2013 в 19:20
поделиться