QSet Class
template <typename T> class QSetQSet クラスは、ハッシュ・テーブル・ベースの集合を提供するテンプレート・クラスです。詳細...
ヘッダー | #include <QSet> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバのリスト
- QSetはImplicitly Shared Classesの一部です。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
class | const_iterator |
class | iterator |
ConstIterator | |
Iterator | |
const_pointer | |
const_reference | |
difference_type | |
key_type | |
pointer | |
reference | |
size_type | |
value_type |
パブリック関数
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の汎用コンテナクラスの1つです。不特定の順序で値を保存し、非常に高速な値の検索を提供します。内部的には、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 スタイルのイテレータ(QSetIterator とQMutableSetIterator) とSTL スタイルのイテレータ(QSet::iterator とQSet::const_iterator) の両方をサポートしています。以下は、Javaスタイルのイテレータを使用してQSet<QWidget *>を反復処理する方法です:
QSetIterator<QWidget*>i(set);while(i.hasNext()) {*w= i.next() QWidget*w =i.next(); qDebug() << w; }
以下は同じコードだが、STLスタイルのイテレーターを使っている:
for(autoi=set.cbegin(),end=set.cend(); i!=end;++i) qDebug() << *i;
QSetは順序付けされていないため、イテレータのシーケンスが予測可能であると仮定することはできません。キーによる順序付けが必要な場合は、QMap を使用してください。
QSet内を移動するには、範囲ベースのforを使用することもできます:
アイテムをセットから削除するには、remove ()を使用する。また、すべての項目を削除するclear() 関数もあります。
QSetの値のデータ型は、割り当て可能なデータ型でなければなりません。例えば、QWidget を値として格納することはできません。代わりに、QWidget * を格納します。さらに、この型はoperator==()
を提供し、キーの型の引数に対してハッシュ値を返すグローバルなqHash() 関数も必要です。qHash() がサポートする型の一覧については、QHash のドキュメントを参照してください。
内部的には、QSet はハッシュ・テーブルを使用して検索を実行します。ハッシュ・テーブルは自動的に大きくなったり小さくなったりして、メモリを浪費することなく高速な検索を行います。QSet に含まれる要素の数がおおよそわかっている場合は、reserve() を呼び出すことで、ハッシュ・テーブルのサイズを制御することができます。また、capacity() を呼び出して、ハッシュ・テーブルのサイズを取得することもできる。
QSetIterator 、QMutableSetIterator 、QHash 、QMapも参照のこと 。
メンバ型ドキュメント
QSet::ConstIterator
Qt-style synonym forQSet::const_iterator.
QSet::Iterator
Qt-style synonym forQSet::iterator.
QSet::const_pointer
const T * の型定義。STL との互換性のために提供される。
QSet::const_reference
const T & の型定義。STL との互換性のために提供される。
QSet::difference_type
const ptrdiff_tの型定義。STL との互換性のために提供されています。
QSet::key_type
STL との互換性のために提供される。
QSet::pointer
T * の型定義。STL との互換性のために提供される。
QSet::reference
T & の型定義。STL との互換性のために提供される。
QSet::size_type
int の型定義。STL との互換性のために提供される。
QSet::value_type
STL との互換性のために提供される。
メンバ関数ドキュメント
QSet<T> &QSet::operator+=(const T &value)
QSet<T> &QSet::operator<<(const T &value)
QSet<T> &QSet::operator|=(const T &value)
新しいアイテムvalue を挿入し、セットへの参照を返す。value がすでにセット内に存在する場合、セットは変更されません。
insert()も参照してください 。
以下同じ 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
セットの最初のアイテムに位置する constSTL 形式のイテレータを返します。
constBegin() およびend()も参照してください 。
QSet<T>::iterator QSet::begin()
これはオーバーロードされた関数です。
セットの最初のアイテムに位置する、非 constSTL 形式のイテレータを返します。
qsizetype QSet::capacity() const
セットの内部ハッシュテーブルのバケット数を返す。
この関数の唯一の目的は、QSet のメモリ使用量を微調整する手段を提供することです。一般に、この関数を呼び出す必要はほとんどないでしょう。セット内の項目数を知りたい場合は、size() を呼び出す。
[noexcept]
QSet<T>::const_iterator QSet::cbegin() const
セットの最初のアイテムに位置する constSTL 形式のイテレータを返します。
[noexcept]
QSet<T>::const_iterator QSet::cend() const
集合の最後の項目の後の虚数項目を指す、STL 形式のイテレータを返します。
void QSet::clear()
セットからすべての要素を削除します。
remove()も参照してください 。
[noexcept]
QSet<T>::const_iterator QSet::constBegin() const
セットの最初のアイテムに位置する constSTL 形式のイテレータを返します。
begin() およびconstEnd()も参照してください 。
[noexcept]
QSet<T>::const_iterator QSet::constEnd() const
集合の最後の項目の後の虚数項目を指す、STL 形式のイテレータを返します。
constBegin() およびend()も参照してください 。
QSet<T>::const_iterator QSet::constFind(const T &value) const
セット内の項目value に位置する定数イテレータを返す。セットに項目value が含まれていない場合、この関数はconstEnd() を返します。
find() およびcontains()も参照してください 。
bool QSet::contains(const QSet<T> &other) const
セットにother セットのすべての項目が含まれている場合はtrue
を返し、そうでない場合はfalse
を返す。
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
集合の最後のアイテムの後の架空のアイテムに位置する constSTL 形式のイテレータを返します。
constEnd() およびbegin()も参照してください 。
QSet<T>::iterator QSet::end()
これはオーバーロードされた関数です。
セットの最後のアイテムの後の架空のアイテムを指す、非 constSTL 形式のイテレータを返します。
QSet<T>::iterator QSet::erase(QSet<T>::const_iterator pos)
イテレータ位置pos にある項目をセットから削除し、セットの次の項目に位置するイテレータを返す。
remove() とは異なり、この関数は、QSet の内部データ構造を決してリハッシュさせません。これは、反復処理中に安全に呼び出すことができ、セット内の項目の順序に影響を与えないことを意味する。
注意: イテレータpos は有効で再参照可能でなければなりません。それ自身のend() を含め、それ以外のイテレータでこのメソッドを呼び出すと、未定義の動作になります。特に、空集合のbegin() イテレータでさえ、再参照できません。
QSet<T>::const_iterator QSet::find(const T &value) const
セット内の項目value に位置する定数イテレータを返す。セットに項目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 と少なくとも1つの共通項目を持つ場合、true
を返す。
contains() およびintersect()も参照 。
bool QSet::isEmpty() const
集合に要素がない場合はtrue
を返し、そうでない場合は false を返す。
size()も参照してください 。
bool QSet::remove(const T &value)
項目value の出現回数をすべてセットから削除する。項目が実際に削除された場合は true を返し、そうでない場合はfalse
を返します。
contains() およびinsert()も参照して ください。
[since 6.1]
template <typename Pred> qsizetype QSet::removeIf(Pred pred)
この集合から、述語pred がtrue
を返すすべての要素を削除します。もしあれば、削除された要素の数を返します。
この関数は Qt 6.1 で導入されました。
void QSet::reserve(qsizetype size)
セットの内部ハッシュテーブルが少なくともsize のバケットで構成されていることを保証する。
この関数は、巨大なセットを構築する必要があり、再割り当ての繰り返しを避けたいコードに便利です。例えば
size size は素数である必要はない。なぜなら は内部的に素数を使うからだ。 が過小評価である場合、最悪なのは が少し遅くなることである。QSet size QSet
一般的には、この関数を呼び出す必要はほとんどないだろう。QSet内部ハッシュ・テーブルが自動的に縮小したり拡大したりするので、メモリをあまり浪費することなく良好なパフォーマンスが得られる。
squeeze() およびcapacity()も参照の こと。
qsizetype QSet::size() const
セットに含まれる項目の数を返します。
void QSet::squeeze()
メモリを節約するために、セットの内部ハッシュテーブルのサイズを小さくする。
この関数の唯一の目的は、QSet のメモリ使用量を微調整する手段を提供することです。通常、この関数を呼び出す必要はほとんどありません。
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
を返す。
2つの集合が同じ要素を含む場合は等しいとみなされる。
この関数は、operator==()
を実装する値型を必要とします。
operator==()も参照してください 。
QSet<T> &QSet::operator&=(const QSet<T> &other)
以下同じ intersect(other).
operator&()、operator|=()、operator-=()も参照のこと 。
QSet<T> &QSet::operator&=(const T &value)
これはオーバーロードされた関数である。
と同じである。 intersect(other)と同じで、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
を返す。
2つの集合が同じ要素を含む場合、等しいとみなされる。
この関数は、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)
セットlhs とrhs の和である新しい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)
セットlhs とrhs の交点である新しい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)
セットlhs とrhs の差分である新しい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)
set をストリームout に書き込む。
この関数は、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.