Namespaces
Variants

std::bitset<N>::flip

来自 zh.cppreference.net
 
 
 
 
bitset& flip();
(1) (自 C++11 起为 noexcept)
(自 C++23 起为 constexpr)
bitset& flip( std::size_t pos );
(2) (自 C++23 起为 constexpr)

翻转位,即把 true 的值更改为 false,把 false 的值更改为 true。相当于对 bitset 的部分或所有位执行逻辑非操作。

1) 翻转所有位(类似于 operator~,但就地操作)。
2) 翻转位置 pos 处的位。

参数

pos - 要翻转的位的位置

返回值

* this

异常

2) 若 pos 不对应有效的位位置,则抛出 std::out_of_range 。

示例

#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++标准。

缺陷报告 适用范围 发布时行为 正确行为
LWG 2250 C++98 若 pos 不对应
有效位位置时行为未定义
此情况下始终
抛出异常

参见

将位设置为 true 或给定值
(公开成员函数)
将位设置为 false
(公开成员函数)
执行二进制 AND、OR、XOR 和 NOT 运算
(公开成员函数)
翻转所有位
( std::vector<bool,Allocator> 的公开成员函数)