QSet Class

template <typename T> class QSet

QSet 클래스는 해시 테이블 기반 집합을 제공하는 템플릿 클래스입니다. 더 보기...

헤더: #include <QSet>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

참고: 이 클래스의 모든 함수는 재진입됩니다.

공용 유형

공용 함수

QSet()
QSet(std::initializer_list<T> list)
QSet(InputIterator first, InputIterator last)
QSet<T>::const_iterator begin() const
QSet<T>::iterator begin()
qsizetype capacity() const
QSet<T>::const_iterator cbegin() const
QSet<T>::const_iterator cend() const
void clear()
QSet<T>::const_iterator constBegin() const
QSet<T>::const_iterator constEnd() const
QSet<T>::const_iterator constFind(const T &value) const
bool contains(const QSet<T> &other) const
bool contains(const T &value) const
qsizetype count() const
bool empty() const
QSet<T>::const_iterator end() const
QSet<T>::iterator end()
QSet<T>::iterator erase(QSet<T>::const_iterator pos)
QSet<T>::const_iterator find(const T &value) const
QSet<T>::iterator find(const T &value)
QSet<T>::iterator insert(const T &value)
(since 6.1) QSet<T>::iterator insert(QSet<T>::const_iterator it, const T &value)
QSet<T> &intersect(const QSet<T> &other)
bool intersects(const QSet<T> &other) const
bool isEmpty() const
bool remove(const T &value)
(since 6.1) qsizetype removeIf(Pred pred)
void reserve(qsizetype size)
qsizetype size() const
void squeeze()
QSet<T> &subtract(const QSet<T> &other)
void swap(QSet<T> &other)
QSet<T> &unite(const QSet<T> &other)
QList<T> values() const
bool operator!=(const QSet<T> &other) const
QSet<T> &operator&=(const QSet<T> &other)
QSet<T> &operator&=(const T &value)
QSet<T> &operator+=(const QSet<T> &other)
QSet<T> &operator+=(const T &value)
QSet<T> &operator-=(const QSet<T> &other)
QSet<T> &operator-=(const T &value)
QSet<T> &operator<<(const T &value)
bool operator==(const QSet<T> &other) const
QSet<T> &operator|=(const QSet<T> &other)
QSet<T> &operator|=(const T &value)
(since 6.1) qsizetype erase_if(QSet<T> &set, Predicate pred)
QSet<T> operator&(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator&(const QSet<T> &lhs, const QSet<T> &rhs)
QSet<T> operator+(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator+(const QSet<T> &lhs, const QSet<T> &rhs)
QSet<T> operator-(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator-(const QSet<T> &lhs, const QSet<T> &rhs)
QDataStream &operator<<(QDataStream &out, const QSet<T> &set)
QDataStream &operator>>(QDataStream &in, QSet<T> &set)
QSet<T> operator|(QSet<T> &&lhs, const QSet<T> &rhs)
QSet<T> operator|(const QSet<T> &lhs, const QSet<T> &rhs)

상세 설명

QSet<T>는 Qt의 일반 컨테이너 클래스 중 하나입니다. 값을 지정되지 않은 순서로 저장하고 매우 빠른 값 조회를 제공합니다. 내부적으로 QSet<T>는 QHash 로 구현됩니다.

다음은 QString 값을 가진 QSet 예제입니다:

집합에 값을 삽입하려면 insert()를 사용합니다:

set.insert("one");
set.insert("three");
set.insert("seven");

세트에 항목을 삽입하는 또 다른 방법은 operator<<()를 사용하는 것입니다:

set << "twelve" << "fifteen" << "nineteen";

항목이 집합에 속하는지 여부를 테스트하려면 contains()를 사용합니다:

if (!set.contains("ninety-nine"))
    ...

QSet에 저장된 모든 값을 탐색하려면 이터레이터를 사용할 수 있습니다. QSet은 Java 스타일 이터레이터 (QSetIteratorQMutableSetIterator)와 STL 스타일 이터레이터 (QSet::iteratorQSet::const_iterator)를 모두 지원합니다. 다음은 Java 스타일 이터레이터를 사용하여 QSet<QWidget *>을 반복하는 방법입니다:

QSetIterator<QWidget*> i(set);while (i.hasNext()) { { QWidget *w = i.next();    qDebug() << w;
}

다음은 동일한 코드이지만 STL 스타일 반복자를 사용하는 코드입니다:

for(auto i = set.cbegin(), end = set.cend(); i != end; ++i)    qDebug() << *i;

QSet은 순서가 지정되지 않으므로 반복기의 순서를 예측할 수 없습니다. 키별로 순서를 지정해야 하는 경우 QMap.

QSet을 탐색하려면 범위 기반 for를 사용할 수도 있습니다:

QSet<QString> set;...for(const auto &value: set)    qDebug() << value;

remove()를 사용하여 세트에서 항목을 제거할 수 있습니다. 모든 항목을 제거하는 clear() 함수도 있습니다.

QSet의 값 데이터 유형은 할당 가능한 데이터 유형이어야 합니다. 예를 들어 QWidget 를 값으로 저장할 수 없으며 대신 QWidget *를 저장해야 합니다. 또한 유형은 operator==() 을 제공해야 하며 키 유형의 인수에 대한 해시값을 반환하는 전역 qHash() 함수도 있어야 합니다. qHash ()에서 지원하는 유형 목록은 QHash 설명서를 참조하세요.

내부적으로 QSet은 해시 테이블을 사용하여 조회를 수행합니다. 해시 테이블은 메모리 낭비 없이 빠른 조회를 제공하기 위해 자동으로 커지고 작아집니다. QSet에 포함될 요소의 대략적인 수를 이미 알고 있는 경우 reserve()를 호출하여 해시 테이블의 크기를 제어할 수 있지만 좋은 성능을 얻기 위해 반드시 필요한 것은 아닙니다. capacity ()를 호출하여 해시 테이블의 크기를 검색할 수도 있습니다.

QSetIterator, QMutableSetIterator, QHash, QMap참조하세요 .

멤버 유형 문서

QSet::ConstIterator

QSet::const_iterator 의 Qt 스타일 동의어.

QSet::Iterator

QSet::iterator 의 Qt 스타일 동의어.

QSet::const_pointer

상수 T *에 대한 Typedef. STL 호환성을 위해 제공됩니다.

QSet::const_reference

const T &용 Typedef. STL 호환성을 위해 제공됩니다.

QSet::difference_type

const ptrdiff_t에 대한 Typedef. STL 호환성을 위해 제공됩니다.

QSet::key_type

STL 호환성을 위해 제공되는 T용 Typedef입니다.

QSet::pointer

T *의 경우 Typedef. STL 호환성을 위해 제공됩니다.

QSet::reference

T &용 Typedef. STL 호환성을 위해 제공됩니다.

QSet::size_type

int. STL 호환성을 위해 제공됩니다.

QSet::value_type

STL 호환성을 위해 제공되는 T용 Typedef입니다.

멤버 함수 문서

QSet<T> &QSet::operator+=(const T &value)

QSet<T> &QSet::operator<<(const T &value)

QSet<T> &QSet::operator|=(const T &value)

새 항목 value 을 삽입하고 집합에 대한 참조를 반환합니다. value 이 이미 집합에 있는 경우 집합은 변경되지 않습니다.

insert()도 참조하세요 .

QSet<T> &QSet::operator+=(const QSet<T> &other)

QSet<T> &QSet::operator|=(const QSet<T> &other)

와 동일 unite(other).

operator|(), operator&=() 및 operator-=()도 참조하세요 .

[noexcept] QSet::QSet()

빈 집합을 구축합니다.

clear()도 참조하세요 .

QSet::QSet(std::initializer_list<T> list)

이니셜라이저 목록에 있는 각 요소의 복사본으로 세트를 구성합니다 list.

template <typename InputIterator, QtPrivate::IfIsInputIterator<InputIterator> = true> QSet::QSet(InputIterator first, InputIterator last)

이터레이터 범위의 콘텐츠로 집합을 구성합니다 [first, last).

InputIterator 의 값 유형은 T 으로 변환할 수 있어야 합니다.

참고: 범위 [first, last)에 중복 요소가 포함된 경우 첫 번째 요소가 유지됩니다.

[noexcept] QSet<T>::const_iterator QSet::begin() const

세트의 첫 번째 항목에 위치한 상수 STL 스타일 이터레이터를 반환합니다.

constBegin() 및 end()도 참조하세요 .

QSet<T>::iterator QSet::begin()

이 함수는 오버로드된 함수입니다.

세트의 첫 번째 항목에 위치한 생성되지 않은 STL 스타일 이터레이터를 반환합니다.

qsizetype QSet::capacity() const

세트의 내부 해시 테이블에 있는 버킷 수를 반환합니다.

이 함수의 유일한 목적은 QSet 의 메모리 사용량을 미세 조정하는 수단을 제공하는 것입니다. 일반적으로 이 함수를 호출할 필요는 거의 없습니다. 세트에 몇 개의 항목이 있는지 알고 싶다면 size()를 호출하세요.

reserve() 및 squeeze()도 참조하세요 .

[noexcept] QSet<T>::const_iterator QSet::cbegin() const

세트의 첫 번째 항목에 위치한 상수 STL 스타일 이터레이터를 반환합니다.

begin() 및 cend()도 참조하세요 .

[noexcept] QSet<T>::const_iterator QSet::cend() const

세트의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

cbegin() 및 end()도 참조하세요 .

void QSet::clear()

집합에서 모든 요소를 제거합니다.

remove()도 참조하세요 .

[noexcept] QSet<T>::const_iterator QSet::constBegin() const

세트의 첫 번째 항목에 위치한 상수 STL 스타일 이터레이터를 반환합니다.

begin() 및 constEnd()도 참조하세요 .

[noexcept] QSet<T>::const_iterator QSet::constEnd() const

세트의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 상수 STL 스타일 이터레이터를 반환합니다.

constBegin() 및 end()도 참조하세요 .

QSet<T>::const_iterator QSet::constFind(const T &value) const

집합의 value 항목에 위치한 const 이터레이터를 반환합니다. 집합에 value 항목이 없는 경우 이 함수는 constEnd()을 반환합니다.

find() 및 contains()도 참조하세요 .

bool QSet::contains(const QSet<T> &other) const

other 집합의 모든 항목이 포함된 경우 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

insert(), remove() 및 find()도 참조하세요 .

bool QSet::contains(const T &value) const

집합에 항목 value 이 포함되어 있으면 true 을 반환하고, 그렇지 않으면 false를 반환합니다.

insert(), remove() 및 find()도 참조하세요 .

qsizetype QSet::count() const

size()와 동일합니다.

bool QSet::empty() const

집합이 비어 있으면 true 을 반환합니다. 이 함수는 STL 호환성을 위해 제공됩니다. isEmpty ()와 동일합니다.

[noexcept] QSet<T>::const_iterator QSet::end() const

세트의 마지막 항목 뒤에 있는 가상의 항목에 위치한 상수 STL 스타일 이터레이터를 반환합니다.

constEnd() 및 begin()도 참조하세요 .

QSet<T>::iterator QSet::end()

이것은 오버로드된 함수입니다.

세트의 마지막 항목 뒤에 있는 가상의 항목을 가리키는 불변의 STL 스타일 이터레이터를 반환합니다.

QSet<T>::iterator QSet::erase(QSet<T>::const_iterator pos)

집합에서 이터레이터 위치 pos 의 항목을 제거하고 집합의 다음 항목에 위치한 이터레이터를 반환합니다.

remove()와 달리 이 함수는 QSet 내부 데이터 구조를 리해시하지 않습니다. 즉, 반복하는 동안 안전하게 호출할 수 있으며 세트의 항목 순서에 영향을 미치지 않습니다.

참고: 이터레이터 pos 는 유효하고 역참조 가능해야 합니다. 자체 end()를 포함하여 다른 이터레이터에서 이 메서드를 호출하면 정의되지 않은 동작이 발생합니다. 특히 빈 집합의 begin() 이터레이터도 역참조할 수 없습니다.

remove() 및 find()도 참조하세요 .

QSet<T>::const_iterator QSet::find(const T &value) const

집합의 value 항목에 위치한 const 이터레이터를 반환합니다. 집합에 value 항목이 없는 경우 이 함수는 constEnd()을 반환합니다.

constFind() 및 contains()도 참조하세요 .

QSet<T>::iterator QSet::find(const T &value)

이 함수는 오버로드된 함수입니다.

집합의 value 항목에 위치한 컨스트가 아닌 이터레이터를 반환합니다. 집합에 value 항목이 없는 경우 이 함수는 end()을 반환합니다.

QSet<T>::iterator QSet::insert(const T &value)

value 이 아직 집합에 없는 경우 value 항목을 집합에 삽입하고 삽입된 항목을 가리키는 이터레이터를 반환합니다.

operator<<(), remove() 및 contains()도 참조하세요 .

[since 6.1] QSet<T>::iterator QSet::insert(QSet<T>::const_iterator it, const T &value)

이 함수는 오버로드된 함수입니다.

value 이 아직 집합에 없는 경우 value 항목을 집합에 삽입하고 삽입된 항목을 가리키는 이터레이터를 반환합니다.

it 이터레이터는 무시됩니다.

이 함수는 STL과의 호환성을 위해 제공됩니다.

이 함수는 Qt 6.1에 도입되었습니다.

operator<<(), remove() 및 contains()도 참조하십시오 .

QSet<T> &QSet::intersect(const QSet<T> &other)

이 집합에서 other 집합에 포함되지 않은 모든 항목을 제거합니다. 이 집합에 대한 참조가 반환됩니다.

intersects(), operator&=(), unite() 및 subtract()도 참조하세요 .

bool QSet::intersects(const QSet<T> &other) const

이 집합에 other 과 공통 항목이 하나 이상 있는 경우 true 을 반환합니다.

contains() 및 intersect()도 참조하세요 .

bool QSet::isEmpty() const

집합에 요소가 없는 경우 true 을 반환하고, 그렇지 않으면 false를 반환합니다.

size()도 참조하세요 .

bool QSet::remove(const T &value)

세트에서 value 항목의 모든 항목을 제거합니다. 항목이 실제로 제거되면 참을 반환하고, 그렇지 않으면 false 을 반환합니다.

contains() 및 insert()도 참조하세요 .

[since 6.1] template <typename Pred> qsizetype QSet::removeIf(Pred pred)

이 집합에서 predtrue 을 반환하는 모든 요소를 제거합니다. 제거된 엘리먼트가 있으면 그 수를 반환합니다.

이 함수는 Qt 6.1에 도입되었습니다.

void QSet::reserve(qsizetype size)

집합의 내부 해시 테이블이 최소 size 버킷으로 구성되어 있는지 확인합니다.

이 함수는 대규모 집합을 구축해야 하고 반복적인 재할당을 피하려는 코드에 유용합니다. 예를 들어

QSet<QString> set;
set.reserve(20000);
for (int i = 0; i < 20000; ++i)
    set.insert(values[i]);

size 은 집합에서 예상되는 최대 요소 수보다 약간 많은 것이 이상적입니다. size 은 소수일 필요가 없습니다. QSet 은 내부적으로 소수를 사용하므로 소수일 필요는 없습니다. size 이 과소 추정된 경우 최악의 경우 QSet 이 약간 느려질 수 있습니다.

일반적으로 이 함수를 호출할 필요는 거의 없습니다. QSet 의 내부 해시 테이블은 메모리를 너무 많이 낭비하지 않고 좋은 성능을 제공하기 위해 자동으로 축소되거나 커집니다.

squeeze() 및 capacity()도 참조하세요 .

qsizetype QSet::size() const

세트의 항목 수를 반환합니다.

isEmpty() 및 count()도 참조하세요 .

void QSet::squeeze()

세트의 내부 해시 테이블 크기를 줄여 메모리를 절약합니다.

이 함수의 유일한 목적은 QSet 의 메모리 사용량을 미세 조정하는 수단을 제공하는 것입니다. 일반적으로 이 함수를 호출할 필요는 거의 없습니다.

reserve() 및 capacity()도 참조하세요 .

QSet<T> &QSet::subtract(const QSet<T> &other)

other 세트에 포함된 모든 항목을 이 세트에서 제거합니다. 이 집합에 대한 참조를 반환합니다.

operator-=(), unite() 및 intersect()도 참조하세요 .

[noexcept] void QSet::swap(QSet<T> &other)

이 세트를 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.

QSet<T> &QSet::unite(const QSet<T> &other)

other 집합의 각 항목 중 아직 이 집합에 없는 항목이 이 집합에 삽입됩니다. 이 집합에 대한 참조가 반환됩니다.

operator|=(), intersect() 및 subtract()도 참조하세요 .

QList<T> QSet::values() const

집합의 요소를 포함하는 새 QList 을 반환합니다. QList 의 요소 순서는 정의되지 않습니다.

참고: Qt 5.14부터 Qt의 일반 컨테이너 클래스에서 범위 생성자를 사용할 수 있으므로 이 메서드 대신 사용해야 합니다.

이 함수는 선형 시간 내에 새 목록을 생성합니다. constBegin ()에서 constEnd()로 반복하면 시간과 메모리 사용을 피할 수 있습니다.

bool QSet::operator!=(const QSet<T> &other) const

other 집합이 이 집합과 같지 않으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

두 집합이 동일한 요소를 포함하면 동일한 것으로 간주됩니다.

이 함수를 구현하려면 operator==() 를 구현할 값 유형이 필요합니다.

operator==()도 참조하세요 .

QSet<T> &QSet::operator&=(const QSet<T> &other)

와 동일 intersect(other).

operator&(), operator|=() 및 operator-=()도 참조하세요 .

QSet<T> &QSet::operator&=(const T &value)

과부하가 걸린 함수입니다.

와 동일하게 intersect(other)와 같으며, 다른 것을 싱글톤 value 을 포함하는 집합으로 간주하면 됩니다.

QSet<T> &QSet::operator-=(const QSet<T> &other)

와 동일 subtract(other).

operator-(), operator|=() 및 operator&=()도 참조하세요 .

QSet<T> &QSet::operator-=(const T &value)

집합에서 value 항목이 발견되면 해당 항목을 제거하고 집합에 대한 참조를 반환합니다. value 에 집합이 포함되어 있지 않으면 아무것도 제거되지 않습니다.

remove()도 참조하세요 .

bool QSet::operator==(const QSet<T> &other) const

other 집합이 이 집합과 같으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

두 집합이 동일한 요소를 포함하면 동일한 것으로 간주됩니다.

이 함수를 구현하려면 operator==() 를 구현할 값 유형이 필요합니다.

operator!=()도 참조하세요 .

관련 비회원

QSet<T> operator+(QSet<T> &&lhs, const QSet<T> &rhs)

QSet<T> operator+(const QSet<T> &lhs, const QSet<T> &rhs)

QSet<T> operator|(QSet<T> &&lhs, const QSet<T> &rhs)

QSet<T> operator|(const QSet<T> &lhs, const QSet<T> &rhs)

lhsrhs 집합의 합인 새로운 QSet 을 반환합니다.

unite(), operator|=(), operator&() 및 operator-()도 참조하세요 .

QSet<T> operator&(QSet<T> &&lhs, const QSet<T> &rhs)

QSet<T> operator&(const QSet<T> &lhs, const QSet<T> &rhs)

lhsrhs 집합의 교집합인 새로운 QSet 을 반환합니다.

intersect(), operator&=(), operator|() 및 operator-()도 참조하십시오 .

QSet<T> operator-(QSet<T> &&lhs, const QSet<T> &rhs)

QSet<T> operator-(const QSet<T> &lhs, const QSet<T> &rhs)

lhsrhs 집합의 집합 차이인 새로운 QSet 을 반환합니다.

subtract(), operator-=(), operator|(), operator&()도 참조하세요 .

[since 6.1] template <typename T, typename Predicate> qsizetype erase_if(QSet<T> &set, Predicate pred)

set 집합에서 pred 술어가 참을 반환하는 모든 요소를 제거합니다. 제거된 엘리먼트가 있으면 그 수를 반환합니다.

이 함수는 Qt 6.1에 도입되었습니다.

template <typename T> QDataStream &operator<<(QDataStream &out, const QSet<T> &set)

out 을 스트리밍하기 위해 set 을 씁니다.

이 함수는 operator<<() 을 구현하기 위한 값 유형이 필요합니다.

QDataStream 연산자의 형식을참조하십시오 .

template <typename T> QDataStream &operator>>(QDataStream &in, QSet<T> &set)

스트림 in 에서 set 로 집합을 읽습니다.

이 함수는 operator>>() 을 구현하기 위한 값 유형이 필요합니다.

QDataStream 연산자의 형식을참조하십시오 .

© 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.