命名空间
变体
操作

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

来自 cppreference.com
 
 
 
 
class reference;

The std::vector<bool, Alloc> specializations define std::vector<bool, Alloc>::reference as a publicly-accessible nested class. std::vector<bool, Alloc>::reference proxies the behavior of references to a single bit in std::vector<bool, Alloc>.

The primary use of std::vector<bool, Alloc>::reference is to provide an lvalue that can be returned from operator[].

Any reads or writes to a vector that happen via a std::vector<bool, Alloc>::reference potentially read or write to the entire underlying vector.

内容

[编辑] 成员函数

(构造函数)
构造引用。仅对 std::vector<bool, Alloc> 本身可见
(公共成员函数)
(析构函数)
销毁引用
(公共成员函数)
operator=
将一个 bool 赋值给引用的位
(公共成员函数)
operator bool
返回引用的位
(公共成员函数) [编辑]
flip
翻转引用的位
(公共成员函数)

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

~reference();
(直到 C++20)
constexpr ~reference();
(自 C++20 起)

销毁引用。

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

(1)
reference& operator=( bool x );
(直到 C++11)
reference& operator=( bool x ) noexcept;
(自 C++11 起)
(直到 C++20)
constexpr reference& operator=( bool x ) noexcept;
(自 C++20 起)
(2)
reference& operator=( const reference& x );
(直到 C++11)
reference& operator=( const reference& x ) noexcept;
(自 C++11 起)
(直到 C++20)
constexpr reference& operator=( const reference& x ) noexcept;
(自 C++20 起)
constexpr const reference& operator=( bool x ) const noexcept;
(3) (自 C++23 起)

将一个值赋值给引用的位。

参数

x - 要赋值的值

返回值

*this

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

operator bool() const;
(直到 C++11)
operator bool() const noexcept;
(自 C++11 起)
(直到 C++20)
constexpr operator bool() const noexcept;
(自 C++20 起)

返回引用的位的值。

参数

(无)

返回值

引用的位。

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

void flip();
(直到 C++11)
void flip() noexcept;
(自 C++11 起)
(直到 C++20)
constexpr void flip() noexcept;
(自 C++20 起)

反转引用的位。

参数

(无)

返回值

(无)

[编辑] 辅助类

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> 当且仅当 T 表示类型 std::vector<bool, Alloc>::reference 时为 true, 其中 Alloc 为某种类型, 并且 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);.

[edit] 示例

[edit] 另请参阅

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

[edit] 外部链接

Scott Meyers 编著的“Effective Modern C++”(2015 年),第 2 章,第 6 条:“当 auto 推断出不想要的类型时,使用显式类型初始化习惯用法。”(第 43-46 页)—— 描述了可能误用代理类 std::vector<bool>::reference 的情况。