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= | присваивает значение биту, на который ссылается объект (функция-член общего доступа) |
| возвращает значение бита, на который ссылается объект (функция-член общего доступа) |
|
|
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) |
return underlying_.parse(ctx);.return underlying_.format(r, ctx);. Пример
См. также
| доступ к указанному элементу (функция-член общего доступа класса std::vector<T,Allocator>) |
|
|
[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