Spec-Zone.ru › Qt 5.13

Класс QBitArray

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

Заголовок: #include <QBitArray>
qmake: QT += core
  • Список всех членов, включая унаследованные

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

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

QBitArray(QBitArray &&other)
QBitArray(const QBitArray &other)
QBitArray(int size, bool value = false)
QBitArray()
QBitArray & operator=(QBitArray &&other)
QBitArray & operator=(const QBitArray &other)
bool at(int i) const
const char * bits() const
void clear()
void clearBit(int i)
int count() const
int count(bool on) const
bool fill(bool value, int size = ...)
void fill(bool value, int begin, int end)
bool isEmpty() const
bool isNull() const
void resize(int size)
void setBit(int i)
void setBit(int i, bool value)
int size() const
void swap(QBitArray &other)
bool testBit(int i) const
bool toggleBit(int i)
void truncate(int pos)
bool operator!=(const QBitArray &other) const
QBitArray & operator&=(const QBitArray &other)
bool operator==(const QBitArray &other) const
QBitRef operator[](int i)
bool operator[](int i) const
QBitRef operator[](uint i)
bool operator[](uint 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 представляет собой массив, обеспечивающий доступ к отдельным битам и предоставляющий операторы (И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ и НЕ), которые работают с целыми массивами битов. Он использует неявное совместное использование (copy-on-write), чтобы уменьшить использование памяти и избежать ненужного копирования данных.

Следующий код создает 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 поддерживает & (И), | (ИЛИ), ^ (ИСКЛЮЧАЮЩЕЕ ИЛИ), ~ (НЕ), а также &=, |=, и ^=. Эти операторы работают аналогично встроенным побитовым операторам 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 и QVector.

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

QBitArray::QBitArray(QBitArray &&other)

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

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

QBitArray::QBitArray(const QBitArray &other)

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

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

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

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

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

QBitArray::QBitArray()

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

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

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

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

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

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

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

bool QBitArray::at(int i) const

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

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

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

const char *QBitArray::bits() const

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

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

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

void QBitArray::clear()

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

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

void QBitArray::clearBit(int i)

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

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

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

int QBitArray::count() const

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

int QBitArray::count(bool on) const

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

bool QBitArray::fill(bool value, int size = ...)

Устанавливает каждый бит в массиве битов в значение 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, int begin, int 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] 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 проводит различие между массивами битов null и пустыми массивами битов по историческим причинам. Для большинства приложений важно, содержит ли массив битов какие-либо данные, что можно определить с помощью isEmpty().

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

void QBitArray::resize(int size)

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

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

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

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

void QBitArray::setBit(int i)

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

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

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

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

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

Устанавливает бит в позиции с индексом i в значение value.

int QBitArray::size() const

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

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

void QBitArray::swap(QBitArray &other)

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

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

bool QBitArray::testBit(int i) const

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

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

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

bool QBitArray::toggleBit(int i)

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

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

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

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

void QBitArray::truncate(int pos)

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

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

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

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

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

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

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

Выполняет операцию AND между всеми битами в этом массиве битов и 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[](int 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[](int i) const

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

QBitRef QBitArray::operator[](uint i)

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

bool QBitArray::operator[](uint 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 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 &QBitArray::operator<<(QDataStream &out, const QBitArray &ba)

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

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

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

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

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

QBitArray 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 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-5.13/qbitarray.html

Spec-Zone.ru

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