Spec-Zone.ru › Qt

Класс QBitArray

Класс QBitArray предоставляет массив битов. Подробнее...

Заголовок: #include <QBitArray>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются многопоточными.

Открытые функции

QBitArray(QBitArray &&other)
QBitArray(const QBitArray &other)
QBitArray(qsizetype size, bool value = false)
QBitArray()
QBitArray & operator=(QBitArray &&other)
QBitArray & operator=(const QBitArray &other)
bool at(qsizetype i) const
const char * bits() const
void clear()
void clearBit(qsizetype i)
qsizetype count() const
qsizetype count(bool on) const
bool fill(bool value, qsizetype size = -1)
void fill(bool value, qsizetype begin, qsizetype end)
bool isEmpty() const
bool isNull() const
void resize(qsizetype size)
void setBit(qsizetype i)
void setBit(qsizetype i, bool value)
qsizetype size() const
void swap(QBitArray &other)
bool testBit(qsizetype i) const
quint32 toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const
bool toggleBit(qsizetype i)
void truncate(qsizetype pos)
bool operator!=(const QBitArray &other) const
QBitArray & operator&=(const QBitArray &other)
bool operator==(const QBitArray &other) const
QBitRef operator[](qsizetype i)
bool operator[](qsizetype i) const
QBitArray & operator^=(const QBitArray &other)
QBitArray & operator|=(const QBitArray &other)
QBitArray operator~() const

Статические открытые члены

QBitArray fromBits(const char *data, qsizetype size)

Связанные нечлены

QBitArray operator&(const QBitArray &a1, const QBitArray &a2)
QDataStream & operator<<(QDataStream &out, const QBitArray &ba)
QDataStream & operator>>(QDataStream &in, QBitArray &ba)
QBitArray operator^(const QBitArray &a1, const QBitArray &a2)
QBitArray operator|(const QBitArray &a1, const QBitArray &a2)

Подробное описание

QBitArray — это массив, обеспечивающий доступ к отдельным битам и предоставляющий операторы (И, ИЛИ, XOR и НЕ), которые работают со всем массивом битов. Он использует неявное совместное использование (копирование при записи) для уменьшения потребления памяти и избежания ненужного копирования данных.

Следующий код создает QBitArray, содержащий 200 битов, инициализированных значением false (0):

QBitArray ba(200);

Чтобы инициализировать биты значением true, передайте true в качестве второго аргумента конструктору или вызовите fill() позже.

QBitArray использует индексацию с нуля, как и массивы в C++. Для доступа к биту по определенному индексу можно использовать оператор []. Для неконстантных массивов битов оператор [] возвращает ссылку на бит, который может использоваться в левой части оператора присваивания. Например:

QBitArray ba;
ba.resize(3);
ba[0] = true;
ba[1] = false;
ba[2] = true;

По техническим причинам использование testBit() и setBit() для доступа к битам в массиве более эффективно, чем оператор []. Например:

QBitArray ba(3);
ba.setBit(0, true);
ba.setBit(1, false);
ba.setBit(2, true);

QBitArray поддерживает & (И), | (ИЛИ), ^ (XOR), ~ (НЕ), а также &=, |=, и ^=. Эти операторы работают так же, как встроенные побитовые операторы C++ с аналогичными названиями. Например:

QBitArray x(5);
x.setBit(3, true);
// x: [ 0, 0, 0, 1, 0 ]

QBitArray y(5);
y.setBit(4, true);
// y: [ 0, 0, 0, 0, 1 ]

x |= y;
// x: [ 0, 0, 0, 1, 1 ]

По историческим причинам QBitArray различает нулевой массив битов и пустой массив битов. Нулевой массив битов — это массив битов, инициализированный с помощью конструктора по умолчанию QBitArray. Пустой массив битов — это любой массив битов с размером 0. Нулевой массив битов всегда пустой, но пустой массив битов необязательно нулевой:

QBitArray().isNull();           // returns true
QBitArray().isEmpty();          // returns true

QBitArray(0).isNull();          // returns false
QBitArray(0).isEmpty();         // returns true

QBitArray(3).isNull();          // returns false
QBitArray(3).isEmpty();         // returns false

Все функции, кроме isNull(), обрабатывают нулевые массивы битов так же, как и пустые; например, QBitArray() сравнивается с QBitArray(0). Рекомендуется всегда использовать isEmpty() и избегать isNull().

См. также QByteArray и QList.

Документация по членам-функциям

[since 5.2] QBitArray::QBitArray(QBitArray &&other)

Перемещающее конструктор QBitArray, позволяющий ему указывать на тот же объект, на который указывал other.

Функция была добавлена в Qt 5.2.

QBitArray::QBitArray(const QBitArray &other)

Создает копию other.

Эта операция занимает постоянное время, потому что QBitArray неявное разделение. Это делает возврат QBitArray из функции очень быстрым. Если изменён общий экземпляр, он будет скопирован (copy-on-write), и это занимает линейное время.

См. также operator=().

QBitArray::QBitArray(qsizetype size, bool value = false)

Создаёт массив битов размером size бит. Биты инициализируются значением value, по умолчанию false (0).

QBitArray::QBitArray()

Создаёт пустой массив битов.

См. также isEmpty().

[since 5.2] QBitArray &QBitArray::operator=(QBitArray &&other)

Перемещает other в этот массив битов и возвращает ссылку на этот массив битов.

Эта функция была добавлена в Qt 5.2.

QBitArray &QBitArray::operator=(const QBitArray &other)

Присваивает other этому массиву битов и возвращает ссылку на этот массив битов.

bool QBitArray::at(qsizetype i) const

Возвращает значение бита по индексу i.

i должен быть допустимым индексом в массиве битов (т.е., 0 <= i < size()).

См. также operator[]().

[since 5.11] const char *QBitArray::bits() const

Возвращает указатель на плотный массив битов для этого QBitArray. Биты считаются вверх от младшего значащего бита в каждом байте. Количество значимых битов в последнем байте задаётся size() % 8.

Эта функция была добавлена в Qt 5.11.

См. также fromBits() и size().

void QBitArray::clear()

Очищает содержимое массива битов и делает его пустым.

См. также resize() и isEmpty().

void QBitArray::clearBit(qsizetype i)

Устанавливает бит по индексу i в 0.

i должен быть допустимым индексом в массиве битов (т.е., 0 <= i < size()).

См. также setBit() и toggleBit().

qsizetype QBitArray::count() const

То же, что и size().

qsizetype QBitArray::count(bool on) const

Если on равно true, эта функция возвращает количество единичных битов в массиве битов; в противном случае возвращает количество нулевых битов.

bool QBitArray::fill(bool value, qsizetype size = -1)

Устанавливает каждый бит в массиве битов в value, возвращая true, если успешно; в противном случае возвращает false. Если size отличается от -1 (по умолчанию), массив битов предварительно изменяется на size.

Пример:

QBitArray ba(8);
ba.fill(true);
// ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ]

ba.fill(false, 2);
// ba: [ 0, 0 ]

См. также resize().

void QBitArray::fill(bool value, qsizetype begin, qsizetype end)

Это перегруженная функция.

Устанавливает биты по индексам от begin до (но не включая) end в value.

begin должен быть допустимым индексом в массиве битов (0 <= begin < size()).

end должен быть либо допустимым индексом, либо равен size(), в этом случае операция заполнения выполняется до конца массива (0 <= end <= size()).

Пример:

QBitArray ba(4);
ba.fill(true, 1, 2);            // ba: [ 0, 1, 0, 0 ]
ba.fill(true, 1, 3);            // ba: [ 0, 1, 1, 0 ]
ba.fill(true, 1, 4);            // ba: [ 0, 1, 1, 1 ]

[static, since 5.11] QBitArray QBitArray::fromBits(const char *data, qsizetype size)

Создаёт QBitArray с плотным массивом битов, расположенным по адресу data, размером size бит. Массив байтов по адресу data должен иметь длину не менее size / 8 (округлено вверх) байт.

Если size не кратно 8, эта функция включит младшие size % 8 битов из последнего байта в data.

Эта функция была добавлена в Qt 5.11.

См. также bits().

bool QBitArray::isEmpty() const

Возвращает true если у этого массива битов размер 0; в противном случае возвращает false.

См. также size().

bool QBitArray::isNull() const

Возвращает true если этот массив битов равен null; в противном случае возвращает false.

Пример:

QBitArray().isNull();           // returns true
QBitArray(0).isNull();          // returns false
QBitArray(3).isNull();          // returns false

Qt различает пустые и нулевые массивы битов по историческим причинам. Для большинства приложений важно, содержит ли массив битов какие-либо данные, и это можно определить с помощью isEmpty().

См. также isEmpty().

void QBitArray::resize(qsizetype size)

Изменяет размер массива битов на size бит.

Если size больше текущего размера, массив битов расширяется до size бит, дополнительные биты добавляются в конец. Новые биты инициализируются false (0).

Если size меньше текущего размера, биты удаляются с конца.

См. также size().

void QBitArray::setBit(qsizetype i)

Устанавливает бит по индексу i в 1.

i должен быть допустимым индексом в массиве битов (т.е., 0 <= i < size()).

См. также clearBit() и toggleBit().

void QBitArray::setBit(qsizetype i, bool value)

Это перегруженная функция.

Устанавливает бит по индексу i в value.

qsizetype QBitArray::size() const

Возвращает количество битов, хранящихся в массиве битов.

См. также resize().

void QBitArray::swap(QBitArray &other)

Меняет местами массив битов other с этим массивом битов. Эта операция очень быстрая и никогда не терпит неудачу.

bool QBitArray::testBit(qsizetype i) const

Возвращает true если бит по индексу i равен 1; в противном случае возвращает false.

i должен быть допустимым индексом в массиве битов (т.е., 0 <= i < size()).

См. также setBit() и clearBit().

[since 6.0] quint32 QBitArray::toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const

Возвращает массив битов, преобразованный в целое число. Преобразование основано на endianness. Преобразует до 32 первых битов массива в quint32 и возвращает его, следуя endianness. Если ok не равен null-указателю и массив содержит более 32 битов, ok устанавливается в false, а эта функция возвращает ноль; в противном случае устанавливается в true.

Эта функция была добавлена в Qt 6.0.

bool QBitArray::toggleBit(qsizetype i)

Инвертирует значение бита по индексу i, возвращая предыдущее значение этого бита как true (если он был установлен) или false (если он был сброшен).

Если предыдущее значение было 0, новое значение будет 1. Если предыдущее значение было 1, новое значение будет 0.

i должен быть допустимым индексом в массиве битов (т.е., 0 <= i < size()).

См. также setBit() и clearBit().

void QBitArray::truncate(qsizetype pos)

Обрезает массив битов по индексу pos.

Если pos выходит за пределы массива, ничего не происходит.

См. также resize().

bool QBitArray::operator!=(const QBitArray &other) const

Возвращает true если other не равно этому массиву битов; в противном случае возвращает false.

См. также operator==().

QBitArray &QBitArray::operator&=(const QBitArray &other)

Выполняет операцию И между всеми битами в этом массиве битов и other. Присваивает результат этому массиву битов и возвращает ссылку на него.

Результат имеет длину самого длинного из двух массивов битов, а любые недостающие биты (если один массив короче другого) принимаются за 0.

Пример:

QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
a &= b;                         // a: [ 1, 0, 0 ]

См. также operator&(), operator|=(), operator^=() и operator~().

bool QBitArray::operator==(const QBitArray &other) const

Возвращает true , если other равно этому битовому массиву; в противном случае возвращает false.

См. также operator!=().

QBitRef QBitArray::operator[](qsizetype i)

Возвращает бит по индексу i в виде изменяемой ссылки.

i должен быть допустимым индексом в битовом массиве (т.е., 0 <= i < size()).

Пример:

QBitArray a(3);
a[0] = false;
a[1] = true;
a[2] = a[0] ^ a[1];

Значение результата имеет тип QBitRef, вспомогательный класс для QBitArray. Когда вы получаете объект типа QBitRef, вы можете присвоить ему значение, и присвоение будет применено к биту в QBitArray, из которого вы получили ссылку.

Функции testBit(), setBit() и clearBit() немного быстрее.

См. также at(), testBit(), setBit() и clearBit().

bool QBitArray::operator[](qsizetype i) const

Это перегруженная функция.

QBitArray &QBitArray::operator^=(const QBitArray &other)

Выполняет операцию XOR между всеми битами этого битового массива и other. Присваивает результат этому битовому массиву и возвращает ссылку на него.

Результат имеет длину самого длинного из двух битовых массивов, при этом любые отсутствующие биты (если один массив короче другого) считаются равными 0.

Пример:

QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
a ^= b;                         // a: [ 0, 1, 1 ]

См. также operator^(), operator&=(), operator|=() и operator~().

QBitArray &QBitArray::operator|=(const QBitArray &other)

Выполняет операцию OR между всеми битами этого битового массива и other. Присваивает результат этому битовому массиву и возвращает ссылку на него.

Результат имеет длину самого длинного из двух битовых массивов, при этом любые отсутствующие биты (если один массив короче другого) считаются равными 0.

Пример:

QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
a |= b;                         // a: [ 1, 1, 1 ]

См. также operator|(), operator&=(), operator^=() и operator~().

QBitArray QBitArray::operator~() const

Возвращает битовый массив, содержащий инвертированные биты этого битового массива.

Пример:

QBitArray a(3);
QBitArray b;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b = ~a;                         // b: [ 0, 1, 0 ]

См. также operator&(), operator|() и operator^().

Связанные нечлены

QBitArray operator&(const QBitArray &a1, const QBitArray &a2)

Возвращает битовый массив, являющийся результатом операции AND над битовыми массивами a1 и a2.

Результат имеет длину самого длинного из двух битовых массивов, при этом любые отсутствующие биты (если один массив короче другого) считаются равными 0.

Пример:

QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
c = a & b;                      // c: [ 1, 0, 0 ]

См. также operator&=(), operator|() и operator^().

QDataStream &operator<<(QDataStream &out, const QBitArray &ba)

Записывает битовый массив ba в поток out.

См. также Формат операторов QDataStream.

QDataStream &operator>>(QDataStream &in, QBitArray &ba)

Считывает битовый массив в ba из потока in.

См. также Формат операторов QDataStream.

QBitArray operator^(const QBitArray &a1, const QBitArray &a2)

Возвращает битовый массив, являющийся результатом операции XOR над битовыми массивами a1 и a2.

Результат имеет длину самого длинного из двух битовых массивов, при этом любые отсутствующие биты (если один массив короче другого) считаются равными 0.

Пример:

QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
c = a ^ b;                      // c: [ 0, 1, 1 ]

См. также operator^=(), operator&() и operator|().

QBitArray operator|(const QBitArray &a1, const QBitArray &a2)

Возвращает битовый массив, являющийся результатом операции OR над битовыми массивами a1 и a2.

Результат имеет длину самого длинного из двух битовых массивов, при этом любые отсутствующие биты (если один массив короче другого) считаются равными 0.

Пример:

QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
c = a | b;                      // c: [ 1, 1, 1 ]

См. также QBitArray::operator|=(), operator&() и operator^().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qbitarray.html

Spec-Zone.ru

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