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

来自cppreference.com
 
 
 
 
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 发生的对 vector 的读或写,会潜在地读或写整个底层的 vector。

成员函数

(构造函数)
构造引用,只有 std::vector<bool, Alloc> 自身可以访问
(公开成员函数)
(析构函数)
销毁引用
(公开成员函数)
operator=
bool 赋给被引用位
(公开成员函数)
operator bool
返回被引用位
(公开成员函数)
flip
翻转被引用位
(公开成员函数)

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

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

销毁 reference

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::vector<bool, Alloc>::reference 特化 std::formatter。此特化使用 std::formatter<bool, CharT> 作为它的底层格式化器(以 underlying_ 表示),所引用的位被转换为 bool 再格式化。

当且仅当 T 代表对于某个 Alloc 的类型 std::vector<bool, Alloc>::referencestd::vector<bool, Alloc> 不是由程序定义的特化时,仅用于阐述的常量 /* is-vector-bool-reference */<T>true

成员函数

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>::reference
(公开静态成员函数)

外部链接

"Effective Modern C++" by Scott Meyers (2015), 第二章, 条款 6: "当 auto 推导为不想要的类型时使用类型明确的初始化式手法。" (p.43-46)——描述了代理类 std::vector<bool>::reference 的一种可能的误用。