命名空间
变体
操作

std::vector<bool, Alloc>::reference

来自 cppreference.cn
< cpp‎ | 容器‎ | vector bool
 
 
 
 
class reference;

std::vector<bool, Alloc> 特化定义了 std::vector<bool, Alloc>::reference 作为一个可公开访问的嵌套类。std::vector<bool, Alloc>::reference 代理了 std::vector<bool, Alloc> 中单个位的引用的行为。

std::vector<bool, Alloc>::reference 的主要用途是提供一个可从 operator[] 返回的左值。

通过 std::vector<bool, Alloc>::reference 对向量进行的任何读取或写入都可能读取或写入整个底层向量。

目录

[编辑] 成员函数

(构造函数)
构造引用
(公开成员函数)
(析构函数)
销毁引用
(公开成员函数)
operator=
将值赋给被引用的位
(公开成员函数)
operator bool
返回被引用的位
(public member function) [编辑]
flip
翻转被引用的位
(公开成员函数)

std::vector<bool, Alloc>::reference::reference

reference( const reference& ) = default;
(C++11 起)
(C++20 起为 constexpr)

从另一个引用构造引用。 复制构造函数被隐式声明。(直到 C++11)

其他构造函数只能由 std::vector<bool, Alloc> 访问。

std::vector<bool, Alloc>::reference::~reference

~reference();
(C++20 起为 constexpr)

销毁引用。

std::vector<bool, Alloc>::reference::operator=

reference& operator=( bool x );
(1) (C++11 起无异常抛出)
(C++20 起为 constexpr)
constexpr const reference& operator=( bool x ) const noexcept;
(2) (C++23 起)
reference& operator=( const reference& x );
(3) (C++11 起无异常抛出)
(C++20 起为 constexpr)

将值赋给被引用的位。

参数

x - 要赋的值

返回值

*this

std::vector<bool, Alloc>::reference::operator bool

operator bool() const;
(C++11 起无异常抛出)
(C++20 起为 constexpr)

返回被引用的位的值。

返回值

被引用的位。

std::vector<bool, Alloc>::reference::flip

void flip();
(C++11 起无异常抛出)
(C++20 起为 constexpr)

反转被引用的位。

[编辑] 辅助类

std::formatter<std::vector<bool, Alloc>::reference>

template< class T, class CharT >

  requires /*is-vector-bool-reference*/<T>

struct formatter<T, CharT>;
(C++23 起)

特化 std::formatter 用于 std::vector<bool, Alloc>::reference。该特化使用 std::formatter<bool, CharT> 作为其底层格式化器(表示为 underlying_),其中被引用的位被转换为 bool 以进行格式化。

仅用于说明的常量 /*is-vector-bool-reference*/<T>true 当且仅当 T 表示类型 std::vector<bool, Alloc>::referenceAlloc 是某种类型,并且 std::vector<bool, Alloc> 不是程序定义的特化

成员函数

template< class ParseContext >
constexpr ParseContext::iterator parse( ParseContext& ctx );
(1) (C++23 起)
template< class FormatContext >
FormatContext::iterator format( const T& r, FormatContext& ctx ) const;
(2) (C++23 起)
1) 等价于 return underlying_.parse(ctx);
2) 等价于 return underlying_.format(r, ctx);

[编辑] 示例

[编辑] 参阅

访问指定的元素
(std::vector<T,Allocator> 的公共成员函数) [编辑]
[静态]
交换两个 std::vector<bool>::references
(公共静态成员函数) [编辑]

[编辑] 外部链接

Scott Meyers (2015) 著《Effective Modern C++》,第 2 章,第 6 条:“当 auto 推导出不期望的类型时,使用显式类型初始化表达式惯用法。”(第 43-46 页)——描述了代理类 std::vector<bool>::reference 可能的误用。