QBitArray Class
QBitArray 클래스는 비트 배열을 제공합니다. 더 보기...
| 헤더: | #include <QBitArray> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버 목록
- QBitArray는 암시적 공유 클래스의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입 가능합니다.
QBitArray 비교
| 범주 | 비교 가능한 유형 |
|---|---|
| 동등성 | 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)를 제공하는 배열입니다. 이 클래스는 암시적 공유 (쓰기 시 복사)를 사용하여 메모리 사용량을 줄이고 불필요한 데이터 복사를 방지합니다.
다음 코드는 false(0)로 초기화된 200비트를 포함하는 QBitArray를 생성합니다.
QBitArray ba(200);비트를 true로 초기화하려면, 생성자에 두 번째 인수로 ` true `를 전달하거나, 나중에 ` fill()`를 호출하면 됩니다.
QBitArray는 C++ 배열과 마찬가지로 0을 기준으로 하는 인덱스를 사용합니다. 특정 인덱스 위치의 비트에 접근하려면 operator[]()를 사용할 수 있습니다. const가 아닌 비트 배열에서 operator[]()는 할당문의 왼쪽에 사용할 수 있는 비트에 대한 참조를 반환합니다. 예를 들어:
QBitArray ba;
ba.resize(3);
ba[0] = true;
ba[1] = false;
ba[2] = true;기술적인 이유로, 배열 내의 비트에 접근할 때는 operator[]()보다 testBit() 및 setBit()를 사용하는 것이 더 효율적입니다. 예를 들어:
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는 null 비트 배열과 빈 비트 배열을 구분합니다. null 비트 배열은 QBitArray의 기본 생성자를 사용하여 초기화된 비트 배열입니다. 빈 비트 배열은 크기가 0인 모든 비트 배열을 말합니다. null 비트 배열은 항상 비어 있지만, 빈 비트 배열이 반드시 null인 것은 아닙니다:
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 falseisNull()을 제외한 모든 함수는 null 비트 배열과 빈 비트 배열을 동일하게 취급합니다. 예를 들어, QBitArray()는 QBitArray(0)과 동일하게 비교됩니다. 항상 isEmpty()을 사용하고 isNull()는 피할 것을 권장합니다.
QByteArray 및 QList도 참조하십시오 .
멤버 함수 문서
[noexcept] QBitArray::QBitArray()
빈 비트 배열을 생성합니다.
isEmpty()도 참조하십시오 .
[explicit] QBitArray::QBitArray(qsizetype size, bool value = false)
size 개의 비트를 포함하는 비트 배열을 생성합니다. 이 비트들은 value 로 초기화되며, 이 값의 기본값은 false(0)입니다.
[noexcept] QBitArray::QBitArray(const QBitArray &other)
other 의 복사본을 생성합니다.
QBitArray는 암시적으로 공유되므로 이 작업은 상수 시간 내에 완료됩니다. 이로 인해 함수에서 QBitArray를 반환하는 작업이 매우 빠르게 수행됩니다. 공유된 인스턴스가 수정되면 복사(쓰기 시 복사)가 이루어지며, 이 과정에는 선형 시간이 소요됩니다.
operator=()도 참조하십시오 .
[noexcept] QBitArray::QBitArray(QBitArray &&other)
QBitArray 인스턴스를 이동 생성하여, 해당 인스턴스가 ` other `가 가리키던 것과 동일한 객체를 가리키게 합니다.
bool QBitArray::at(qsizetype i) const
인덱스 위치 i 에 있는 비트의 값을 반환합니다.
i i 는 비트 배열에서 유효한 인덱스 위치여야 합니다(즉, 0 <= < ()). size
operator[]()도 참조하십시오 .
const char *QBitArray::bits() const
이 QBitArray 에 대한 고밀도 비트 배열의 포인터를 반환합니다. 비트는 각 바이트의 최하위 비트부터 위쪽으로 순차적으로 계산됩니다. 마지막 바이트에서 관련되는 비트 수는 size() % 8 에 명시되어 있습니다.
void QBitArray::clear()
비트 배열의 내용을 지우고 비워줍니다.
resize() 및 isEmpty()도 참조하십시오 .
void QBitArray::clearBit(qsizetype i)
인덱스 위치 i 에 있는 비트를 0으로 설정합니다.
i i 는 비트 배열에서 유효한 인덱스 위치여야 합니다(즉, 0 <= < ()). 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 로 설정하며, 성공하면 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 begin 은 비트 배열에서 유효한 인덱스 위치여야 합니다(0 <= < ()). 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 falseQt는 역사적인 이유로 null 비트 배열과 빈 비트 배열을 구분합니다. 대부분의 응용 프로그램에서 중요한 것은 비트 배열에 데이터가 포함되어 있는지 여부이며, 이는 isEmpty()를 사용하여 확인할 수 있습니다.
isEmpty()도 참조하십시오 .
void QBitArray::resize(qsizetype size)
비트 배열의 크기를 size 비트로 조정합니다.
size 가 현재 크기보다 크면, 비트 배열은 size 비트 크기로 확장되며, 추가된 비트는 배열의 끝에 추가됩니다. 새로 추가된 비트는 false(0)로 초기화됩니다.
size 가 현재 크기보다 작으면, 끝부분에서 비트가 제거됩니다.
size()도 참조하십시오 .
void QBitArray::setBit(qsizetype i)
인덱스 위치 i 에 있는 비트를 1로 설정합니다.
i i 는 비트 배열에서 유효한 인덱스 위치여야 합니다(즉, 0 <= < ()). 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
비트를 int로 변환한 배열을 반환합니다. 변환은 endianness 를 기반으로 합니다. 배열의 처음 32비트까지를 quint32 로 변환하여 endianness 를 준수하며 반환합니다. ok 가 null 포인터가 아니고 배열의 비트 수가 32비트를 초과하는 경우, ok 는 false로 설정되고 이 함수는 0을 반환합니다. 그렇지 않은 경우 true로 설정됩니다.
이 함수는 Qt 6.0에서 도입되었습니다.
bool QBitArray::toggleBit(qsizetype i)
인덱스 위치 i 에 있는 비트의 값을 반전시키고, 해당 비트의 이전 값을 true(설정되어 있었을 경우) 또는 false(설정되어 있지 않았을 경우)로 반환합니다.
이전 값이 0이었던 경우, 새로운 값은 1이 됩니다. 이전 값이 1이었던 경우, 새로운 값은 0이 됩니다.
i i 는 비트 배열 내에서 유효한 인덱스 위치여야 합니다(즉, 0 <= < ()). size
setBit() 및 clearBit()도 참조하십시오 .
void QBitArray::truncate(qsizetype pos)
인덱스 위치 pos 에서 비트 배열을 잘라냅니다.
pos 가 배열의 끝을 벗어난 경우, 아무 작업도 수행되지 않습니다.
resize()함수도 참조하십시오 .
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~()도 참조하십시오 .
[noexcept] QBitArray &QBitArray::operator=(QBitArray &&other)
other 를 이 비트 배열로 이동시키고, 이 비트 배열에 대한 참조를 반환합니다.
[noexcept] QBitArray &QBitArray::operator=(const QBitArray &other)
이 비트 배열에 ` other `를 할당하고, 이 비트 배열에 대한 참조를 반환합니다.
QBitRef QBitArray::operator[](qsizetype i)
인덱스 위치 i 에 있는 비트를 수정 가능한 참조로 반환합니다.
i i 는 비트 배열에서 유효한 인덱스 위치여야 합니다(즉, 0 <= < ()). 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 &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~()도 참조하십시오 .
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~()도 참조하십시오 .
관련 비멤버 함수
[noexcept] bool operator!=(const QBitArray &lhs, const QBitArray &rhs)
lhs 가 rhs 비트 배열과 다를 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
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 비트 배열의 AND 연산 결과를 비트 배열로 반환합니다.
결과 배열의 길이는 두 비트 배열xml-ph-0000@deepl.internal과 xml-ph-0001@deepl.internal 중 더 긴 쪽의 길이와 같으며, 한 배열이 다른 배열보다 짧을 경우 누락된 비트는 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 연산자의 형식항목도 참조하십시오 .
[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 &&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^=()도 참조하십시오 .
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 연산 결과를 비트 배열로 반환합니다.
결과 배열의 길이는 두 비트 배열xml-ph-0000@deepl.internal와 xml-ph-0001@deepl.internal 중 더 긴 쪽의 길이와 같으며, 한 배열이 다른 배열보다 짧을 경우 누락된 비트는 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 a)
a 의 비트를 반전시킨 비트 배열을 반환합니다.
예시:
© 2026 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.