Spec-Zone.ru › C++

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

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 — предоставить lvalue, которое может возвращаться из operator[].

Любые чтения или записи в вектор, выполняемые через std::vector<bool,Alloc>::reference, потенциально приводят к чтению или записи всего базового вектора.

Функции-члены

(constructor)
создаёт ссылку
(функция-член общего доступа)
(destructor)
уничтожает ссылку
(функция-член общего доступа)
operator=
присваивает значение биту, на который ссылается объект
(функция-член общего доступа)
operator bool
возвращает значение бита, на который ссылается объект
(функция-член общего доступа)
flip
инвертирует бит, на который ссылается объект
(функция-член общего доступа)

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

reference( const reference& ) = default;
(начиная с C++11)
(constexpr начиная с C++20)

Создаёт ссылку из другой ссылки. Конструктор копирования объявляется неявно.(до C++11)

К другим конструкторам доступ имеет только std::vector<bool,Alloc>.

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

~reference();
(constexpr начиная с C++20)

Уничтожает ссылку.

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

reference& operator=( bool x );
(1) (noexcept начиная с C++11)
(constexpr начиная с C++20)
constexpr const reference& operator=( bool x ) const noexcept;
(2) (начиная с C++23)
reference& operator=( const reference& x );
(3) (noexcept начиная с C++11)
(constexpr начиная с C++20)

Присваивает значение биту, на который ссылается объект.

Параметры

x - значение для присваивания

Возвращаемое значение

*this

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

operator bool() const;
(noexcept начиная с C++11)
(constexpr начиная с C++20)

Возвращает значение бита, на который ссылается объект.

Возвращаемое значение

Бит, на который ссылается объект.

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

void flip();
(noexcept начиная с C++11)
(constexpr начиная с 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>, предназначенная только для описания, равна true тогда и только тогда, когда T обозначает тип std::vector<bool,Alloc>::reference для некоторого типа 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);.

Пример

См. также

operator[]
доступ к указанному элементу
(функция-член общего доступа класса std::vector<T,Allocator>)
swap
[static]
обменивает два std::vector<bool>::references
(общедоступная статическая функция-член)

Внешние ссылки

«Эффективный современный C++» Скотта Мейерса (2015), глава 2, пункт 6: «Используйте идиому явно типизированного инициализатора, если auto выводит нежелательные типы» (с. 43–46) — описывает возможное неправильное использование класса-прокси std::vector<bool>::reference).

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/vector_bool/reference

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API