Spec-Zone.ru › Qt 5.9

Класс QBitArray

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

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

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

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

QBitArray()
QBitArray(int size, bool value = false)
QBitArray(const QBitArray &other)
QBitArray(QBitArray &&other)
bool at(int i) const
void clear()
void clearBit(int i)
int count() const
int count(bool on) const
bool fill(bool value, int size = -1)
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)
QBitArray & operator=(const QBitArray &other)
QBitArray & operator=(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 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 предоставляет массив битов.

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

Следующий код создает 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()

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

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

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

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

QBitArray::QBitArray(const QBitArray &other)

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

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

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

QBitArray::QBitArray(QBitArray &&other)

Создаёт экземпляр QBitArray методом перемещения, делая его указателем на тот же объект, на который указывал other.

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

bool QBitArray::at(int i) const

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

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

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

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 истинно, эта функция возвращает количество битов со значением 1 в массиве битов; в противном случае возвращается количество битов со значением 0.

bool QBitArray::fill(bool value, int 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, 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 ]

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(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)

Выполняет операцию И между всеми битами в этом массиве битов и 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~().

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

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

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

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

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

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

Spec-Zone.ru

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