QBitArray Class
QBitArray 클래스는 비트 배열을 제공합니다. 더 보기...
Header: | #include <QBitArray> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버의 목록
- QBitArray는 암시적으로 공유되는 클래스의 일부입니다.
이 클래스는 동등 비교가 가능합니다.
참고: 이 클래스의 모든 함수는 재진입합니다.
공용 함수
QBitArray() | |
QBitArray(qsizetype size, bool value = false) | |
QBitArray(const QBitArray &other) | |
QBitArray(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 |
(since 6.0) quint32 | toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const |
bool | toggleBit(qsizetype i) |
void | truncate(qsizetype pos) |
QBitArray & | operator&=(QBitArray &&other) |
QBitArray & | operator&=(const QBitArray &other) |
QBitArray & | operator=(QBitArray &&other) |
QBitArray & | operator=(const QBitArray &other) |
QBitRef | operator[](qsizetype i) |
bool | operator[](qsizetype i) const |
QBitArray & | operator^=(QBitArray &&other) |
QBitArray & | operator^=(const QBitArray &other) |
QBitArray & | operator|=(QBitArray &&other) |
QBitArray & | operator|=(const QBitArray &other) |
정적 공용 멤버
QBitArray | fromBits(const char *data, qsizetype size) |
관련 비회원
bool | operator!=(const QBitArray &lhs, const QBitArray &rhs) |
QBitArray | operator&(QBitArray &&a1, QBitArray &&a2) |
QBitArray | operator&(QBitArray &&a1, const QBitArray &a2) |
QBitArray | operator&(const QBitArray &a1, QBitArray &&a2) |
QBitArray | operator&(const QBitArray &a1, const QBitArray &a2) |
QDataStream & | operator<<(QDataStream &out, const QBitArray &ba) |
bool | operator==(const QBitArray &lhs, const QBitArray &rhs) |
QDataStream & | operator>>(QDataStream &in, QBitArray &ba) |
QBitArray | operator^(QBitArray &&a1, QBitArray &&a2) |
QBitArray | operator^(QBitArray &&a1, const QBitArray &a2) |
QBitArray | operator^(const QBitArray &a1, QBitArray &&a2) |
QBitArray | operator^(const QBitArray &a1, const QBitArray &a2) |
QBitArray | operator|(QBitArray &&a1, QBitArray &&a2) |
QBitArray | operator|(QBitArray &&a1, const QBitArray &a2) |
QBitArray | operator|(const QBitArray &a1, QBitArray &&a2) |
QBitArray | operator|(const QBitArray &a1, const QBitArray &a2) |
QBitArray | operator~(QBitArray a) |
상세 설명
QBitArray는 개별 비트에 대한 액세스를 제공하고 전체 비트 배열에서 작동하는 연산자(AND, OR, XOR, NOT)를 제공하는 배열입니다. 이 배열은 메모리 사용량을 줄이고 불필요한 데이터 복사를 피하기 위해 암시적 공유 (쓰기 시 복사)를 사용합니다.
다음 코드는 거짓(0)으로 초기화된 200비트를 포함하는 QBitArray를 구성합니다:
QBitArray ba(200);
비트를 참으로 초기화하려면 생성자에 두 번째 인수로 true
을 전달하거나 나중에 fill()을 호출합니다.
QBitArray는 C++ 배열과 마찬가지로 0 기반 인덱스를 사용합니다. 특정 인덱스 위치의 비트에 액세스하려면 연산자[]()를 사용할 수 있습니다. 상수가 아닌 비트 배열에서 연산자[]()는 할당의 왼쪽에서 사용할 수 있는 비트에 대한 참조를 반환합니다. 예를 들어
QBitArray ba; ba.resize(3); ba[0] = true; ba[1] = false; ba[2] = true;
기술적인 이유로 배열의 비트에 액세스하려면 testBit() 및 setBit()를 사용하는 것이 operator[]()보다 더 효율적입니다. 예를 들어
QBitArray ba(3); ba.setBit(0, true); ba.setBit(1, false); ba.setBit(2, true);
QBitArray는 &
(AND), |
(OR), ^
(XOR), ~
(NOT), &=
, |=
, ^=
을 지원합니다. 이러한 연산자는 같은 이름의 기본 제공 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 을참조하십시오 .
멤버 함수 문서
QBitArray &QBitArray::operator&=(QBitArray &&other)
QBitArray &QBitArray::operator&=(const QBitArray &other)
이 비트 배열의 모든 비트와 other 사이에 AND 연산을 수행합니다. 결과를 이 비트 배열에 할당하고 이에 대한 참조를 반환합니다.
결과는 두 비트 배열 중 가장 긴 비트 배열의 길이를 가지며, 누락된 비트(한 배열이 다른 배열보다 짧은 경우)는 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|=(QBitArray &&other)
QBitArray &QBitArray::operator|=(const QBitArray &other)
이 비트 배열의 모든 비트와 other 사이에 OR 연산을 수행합니다. 결과를 이 비트 배열에 할당하고 이에 대한 참조를 반환합니다.
결과는 두 비트 배열 중 가장 긴 비트 배열의 길이를 가지며, 누락된 비트(한 배열이 다른 배열보다 짧은 경우)는 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^=(QBitArray &&other)
QBitArray &QBitArray::operator^=(const QBitArray &other)
이 비트 배열의 모든 비트와 other 사이에 XOR 연산을 수행합니다. 결과를 이 비트 배열에 할당하고 이에 대한 참조를 반환합니다.
결과는 두 비트 배열 중 가장 긴 비트 배열의 길이를 가지며, 누락된 비트(한 배열이 다른 배열보다 짧은 경우)는 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~()도 참조하세요 .
[noexcept]
QBitArray::QBitArray()
빈 비트 배열을 구축합니다.
isEmpty()도 참조하세요 .
[explicit]
QBitArray::QBitArray(qsizetype size, bool value = false)
size 비트를 포함하는 비트 배열을 구축합니다. 비트는 value 로 초기화되며 기본값은 거짓(0)입니다.
[noexcept]
QBitArray::QBitArray(const QBitArray &other)
other 의 복사본을 생성합니다.
이 작업은 암시적으로 공유되므로 시간이 일정하게 걸립니다. 따라서 함수에서 QBitArray를 반환하는 속도가 매우 빠릅니다. 공유 인스턴스가 수정되면 복사(쓰기 시 복사)되므로 선형 시간이 걸립니다.
operator=()도 참조하세요 .
[noexcept]
QBitArray::QBitArray(QBitArray &&other)
Move - QBitArray 인스턴스를 생성하여 other 이 가리키고 있던 것과 동일한 객체를 가리키도록 합니다.
bool QBitArray::at(qsizetype i) const
인덱스 위치의 비트 값을 반환합니다 i.
i 는 비트 배열에서 유효한 인덱스 위치여야 합니다(즉, 0 <= i < size()).
operator[]()도 참조하십시오 .
const char *QBitArray::bits() const
이 QBitArray 에 대한 고밀도 비트 배열에 대한 포인터를 반환합니다. 비트는 각 바이트의 최하위 비트부터 위쪽으로 카운트됩니다. 마지막 바이트에 관련된 비트 수는 size() % 8
으로 제공됩니다.
void QBitArray::clear()
비트 배열의 내용을 지우고 비워둡니다.
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 이 참이면 이 함수는 비트 배열에 저장된 1비트 개수를 반환하고, 그렇지 않으면 0비트 개수를 반환합니다.
bool QBitArray::fill(bool value, qsizetype size = -1)
비트 배열의 모든 비트를 value 로 설정하여 성공하면 참을 반환하고, 그렇지 않으면 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]
QBitArray QBitArray::fromBits(const char *data, qsizetype size)
data 에 위치한 고밀도 비트 배열을 사용하여 size 비트로 QBitArray 을 생성합니다. data 의 바이트 배열은 최소 size / 8(반올림) 바이트 길이여야 합니다.
size 이 8의 배수가 아닌 경우 이 함수는 data 의 마지막 바이트에서 가장 낮은 size % 8비트를 포함합니다.
bits()도 참조하세요 .
bool QBitArray::isEmpty() const
이 비트 배열의 크기가 0이면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
size()도 참조하세요 .
bool QBitArray::isNull() const
이 비트 배열이 null이면 true
을 반환하고, 그렇지 않으면 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 비트가 됩니다. 새 비트는 거짓(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()도 참조하세요 .
[noexcept]
void QBitArray::swap(QBitArray &other)
이 비트 배열을 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.
bool QBitArray::testBit(qsizetype i) const
인덱스 위치 i 의 비트가 1이면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
i 는 비트 배열에서 유효한 인덱스 위치여야 합니다(즉, 0 <= i < size()).
setBit() 및 clearBit()도 참조하십시오 .
[noexcept, since 6.0]
quint32 QBitArray::toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const
정수로 변환된 비트 배열을 반환합니다. 변환은 endianness 을 기반으로 합니다. 배열의 첫 32비트까지 quint32
로 변환한 후 endianness 을 따르며 반환합니다. ok 이 널 포인터가 아니고 배열이 32비트를 초과하는 경우 ok 은 거짓으로 설정되고 이 함수는 0을 반환하며, 그렇지 않으면 참으로 설정됩니다.
이 함수는 Qt 6.0에 도입되었습니다.
bool QBitArray::toggleBit(qsizetype i)
인덱스 위치 i 의 비트 값을 반전하여 해당 비트의 이전 값을 참(설정된 경우) 또는 거짓(설정되지 않은 경우)으로 반환합니다.
이전 값이 0이면 새 값은 1이 됩니다. 이전 값이 1이면 새 값은 0이 됩니다.
i 는 비트 배열에서 유효한 인덱스 위치여야 합니다(즉, 0 <= i < size()).
setBit() 및 clearBit()도 참조하세요 .
void QBitArray::truncate(qsizetype pos)
인덱스 위치 pos 에서 비트 배열을 잘라냅니다.
pos 이 배열의 끝을 넘어가면 아무 일도 일어나지 않습니다.
resize()도 참조하세요 .
[noexcept]
QBitArray &QBitArray::operator=(QBitArray &&other)
other 을 이 비트 배열로 이동하고 이 비트 배열에 대한 참조를 반환합니다.
[noexcept]
QBitArray &QBitArray::operator=(const QBitArray &other)
이 비트 배열에 other 을 할당하고 이 비트 배열에 대한 참조를 반환합니다.
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];
반환 값은 QBitArray 의 헬퍼 클래스인 QBitRef 유형입니다. QBitRef 유형의 객체를 가져오면 해당 객체에 할당할 수 있으며, 이 할당은 참조를 가져온 QBitArray 의 비트에 적용됩니다.
testBit(), setBit() 및 clearBit() 함수는 약간 더 빠릅니다.
at(), testBit(), setBit() 및 clearBit()도 참조하세요 .
bool QBitArray::operator[](qsizetype i) const
과부하가 걸린 기능입니다.
관련 비회원
QBitArray operator&(QBitArray &&a1, QBitArray &&a2)
QBitArray operator&(QBitArray &&a1, const QBitArray &a2)
QBitArray operator&(const QBitArray &a1, QBitArray &&a2)
QBitArray operator&(const QBitArray &a1, const QBitArray &a2)
비트 배열 a1 과 a2 의 AND인 비트 배열을 반환합니다.
결과는 두 비트 배열 중 가장 긴 비트 배열의 길이를 가지며, 누락된 비트(한 배열이 다른 배열보다 짧은 경우)는 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^()도 참조하세요 .
QBitArray operator|(QBitArray &&a1, QBitArray &&a2)
QBitArray operator|(QBitArray &&a1, const QBitArray &a2)
QBitArray operator|(const QBitArray &a1, QBitArray &&a2)
QBitArray operator|(const QBitArray &a1, const QBitArray &a2)
비트 배열 a1 과 a2 의 OR인 비트 배열을 반환합니다.
결과는 두 비트 배열 중 가장 긴 비트 배열의 길이를 가지며, 누락된 비트(한 배열이 다른 배열보다 짧은 경우)는 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^()도 참조하세요 .
QBitArray operator^(QBitArray &&a1, QBitArray &&a2)
QBitArray operator^(QBitArray &&a1, const QBitArray &a2)
QBitArray operator^(const QBitArray &a1, QBitArray &&a2)
QBitArray operator^(const QBitArray &a1, const QBitArray &a2)
비트 배열 a1 과 a2 의 XOR인 비트 배열을 반환합니다.
결과는 두 비트 배열 중 가장 긴 비트 배열의 길이를 가지며, 누락된 비트(한 배열이 다른 배열보다 짧은 경우)는 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|() 를참조하세요 .
[noexcept]
bool operator!=(const QBitArray &lhs, const QBitArray &rhs)
lhs 이 rhs 비트 배열과 같지 않으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
operator==()도 참조하세요 .
QDataStream &operator<<(QDataStream &out, const QBitArray &ba)
비트 배열 ba 을 스트림 out 에 씁니다.
QDataStream 연산자 형식을참조하십시오 .
[noexcept]
bool operator==(const QBitArray &lhs, const QBitArray &rhs)
lhs 이 rhs 비트 배열과 같으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
operator!=()도 참조하세요 .
QDataStream &operator>>(QDataStream &in, QBitArray &ba)
스트림 in 에서 비트 배열을 ba 로 읽습니다.
QDataStream 연산자의 형식을참조하십시오 .
QBitArray operator~(QBitArray a)
비트 배열의 비트가 반전된 비트 배열을 반환합니다 a.
예시:
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.