std::bitset<N>::flip
bitset& flip(); | (1) |
(noexcept начиная с C++11) (constexpr начиная с C++23) |
bitset& flip( std::size_t pos ); | (2) | (constexpr начиная с C++23) |
Инвертирует биты, то есть изменяет значения true на false, а значения false на true. Эквивалентно выполнению логической операции НЕ над частью битового набора или над ним целиком.
1) Инвертирует все биты (как
operator~, но на месте).
2) Инвертирует бит в позиции
pos.Параметры
| pos | - | позиция бита, который нужно инвертировать |
Возвращаемое значение
*this
Исключения
Пример
#include <bitset>
#include <iostream>
int main()
{
std::bitset<4> flops;
std::cout << flops << '\n'
<< flops.flip(0) << '\n'
<< flops.flip(2) << '\n'
<< flops.flip() << '\n';
}
Вывод:
0000 0001 0101 1010
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применён к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
| LWG 2250 | C++98 | поведение было неопределённым, если posне соответствовало допустимой позиции бита | в этом случае всегда выбрасывается исключение |
См. также
устанавливает биты в значение true или в заданное значение (открытая функция-член) |
|
устанавливает биты в значение false (открытая функция-член) |
|
| выполняет побитовые операции И, ИЛИ, исключающее ИЛИ и НЕ (открытая функция-член) |
|
| инвертирует все биты (открытая функция-член std::vector<bool,Allocator>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/bitset/flip