QSet Class▲
-
Header: QSet
-
qmake: QT += core
-
Group: QSet is part of tools, Implicitly Shared Classes
Detailed Description▲
QSet<T> is one of Qt's generic container classes. It stores values in an unspecified order and provides very fast lookup of the values. Internally, QSet<T> is implemented as a QHash.
Here's an example QSet with QString values:
QSet&
lt;QString&
gt; set;
To insert a value into the set, use insert():
set.insert("one"
);
set.insert("three"
);
set.insert("seven"
);
Another way to insert items into the set is to use operator<<():
set &
lt;&
lt; "twelve"
&
lt;&
lt; "fifteen"
&
lt;&
lt; "nineteen"
;
To test whether an item belongs to the set or not, use contains():
if
(!
set.contains("ninety-nine"
))
...
If you want to navigate through all the values stored in a QSet, you can use an iterator. QSet supports both Java-style iterators (QSetIterator and QMutableSetIterator) and STL-style iterators (QSet::iterator and QSet::const_iterator). Here's how to iterate over a QSet<QWidget *> using a Java-style iterator:
QSetIterator&
lt;QWidget *&
gt; i(set);
while
(i.hasNext())
qDebug() &
lt;&
lt; i.next();
Here's the same code, but using an STL-style iterator:
QSet&
lt;QWidget *&
gt;::
const_iterator i =
set.constBegin();
while
(i !=
set.constEnd()) {
qDebug() &
lt;&
lt; *
i;
++
i;
}
QSet is unordered, so an iterator's sequence cannot be assumed to be predictable. If ordering by key is required, use a QMap.
To navigate through a QSet, you can also use foreach:
QSet&
lt;QString&
gt; set;
...
foreach (const
QString &
amp;value, set)
qDebug() &
lt;&
lt; value;
Items can be removed from the set using remove(). There is also a clear() function that removes all items.
QSet's value data type must be an assignable data type. You cannot, for example, store a QWidget as a value; instead, store a QWidget *. In addition, the type must provide operator==(), and there must also be a global qHash() function that returns a hash value for an argument of the key's type. See the QHash documentation for a list of types supported by qHash().
Internally, QSet uses a hash table to perform lookups. The hash table automatically grows and shrinks to provide fast lookups without wasting memory. You can still control the size of the hash table by calling reserve(), if you already know approximately how many elements the QSet will contain, but this isn't necessary to obtain good performance. You can also call capacity() to retrieve the hash table's size.
See Also▲
See also QSetIterator, QMutableSetIterator, QHash, QMap
Member Type Documentation▲
QSet::ConstIterator▲
Qt-style synonym for QSet::const_iterator.
[since 4.2] QSet::Iterator▲
Qt-style synonym for QSet::iterator.
This typedef was introduced in Qt 4.2.
QSet::const_pointer▲
Typedef for const T *. Provided for STL compatibility.
QSet::const_reference▲
Typedef for const T &. Provided for STL compatibility.
[since 5.6] QSet::const_reverse_iterator▲
The QSet::const_reverse_iterator typedef provides an STL-style const reverse iterator for QSet.
It is simply a typedef for std::reverse_iterator<QSet::const_iterator>.
Iterators on implicitly shared containers do not work exactly like STL-iterators. You should avoid copying a container while iterators are active on that container. For more information, read Implicit sharing iterator problem.
This typedef was introduced in Qt 5.6.
See Also▲
See also QSet::rbegin(), QSet::rend(), QSet::reverse_iterator, QSet::const_iterator
QSet::difference_type▲
Typedef for const ptrdiff_t. Provided for STL compatibility.
QSet::key_type▲
Typedef for T. Provided for STL compatibility.
QSet::pointer▲
Typedef for T *. Provided for STL compatibility.
QSet::reference▲
Typedef for T &. Provided for STL compatibility.
[since 5.6] QSet::reverse_iterator▲
The QSet::reverse_iterator typedef provides an STL-style non-const reverse iterator for QSet.
It is simply a typedef for std::reverse_iterator<QSet::iterator>.
Iterators on implicitly shared containers do not work exactly like STL-iterators. You should avoid copying a container while iterators are active on that container. For more information, read Implicit sharing iterator problem.
This typedef was introduced in Qt 5.6.
See Also▲
See also QSet::rbegin(), QSet::rend(), QSet::const_reverse_iterator, QSet::iterator
QSet::size_type▲
Typedef for int. Provided for STL compatibility.
QSet::value_type▲
Typedef for T. Provided for STL compatibility.
Member Function Documentation▲
QSet<T> &QSet::operator+=(const T &value)▲
QSet<T> &QSet::operator<<(const T &value)
QSet<T> &QSet::operator|=(const T &value)
Inserts a new item value and returns a reference to the set. If value already exists in the set, the set is left unchanged.
See Also▲
See also insert()
QSet<T> &QSet::operator+=(const QSet<T> &other)▲
QSet<T> &QSet::operator|=(const QSet<T> &other)
Same as unite(other).
See Also▲
See also operator|(), operator&=(), operator-=()
QSet<T> QSet::operator+(const QSet<T> &other) const▲
QSet<T> QSet::operator|(const QSet<T> &other) const
Returns a new QSet that is the union of this set and the other set.
See Also▲
See also unite(), operator|=(), operator&(), operator-()
QSet::QSet()▲
[since 5.1] QSet::QSet(std::initializer_list<T> list)▲
Constructs a set with a copy of each of the elements in the initializer list list.
This function was introduced in Qt 5.1.
[since 5.14] QSet::QSet(InputIterator first, InputIterator last)▲
Constructs a set with the contents in the iterator range [first, last).
The value type of InputIterator must be convertible to T.
If the range [first, last) contains duplicate elements, the first one is retained.
This function was introduced in Qt 5.14.
QSet::const_iterator QSet::begin() const▲
Returns a const STL-style iterator positioned at the first item in the set.
See Also▲
See also constBegin(), end()
[since 4.2] QSet::iterator QSet::begin()▲
This is an overloaded function.
Returns a non-const STL-style iterator positioned at the first item in the set.
This function was introduced in Qt 4.2.
int QSet::capacity() const▲
Returns the number of buckets in the set's internal hash table.
The sole purpose of this function is to provide a means of fine tuning QSet's memory usage. In general, you will rarely ever need to call this function. If you want to know how many items are in the set, call size().
See Also▲
[since 5.0] QSet::const_iterator QSet::cbegin() const▲
Returns a const STL-style iterator positioned at the first item in the set.
This function was introduced in Qt 5.0.
See Also▲
[since 5.0] QSet::const_iterator QSet::cend() const▲
Returns a const STL-style iterator pointing to the imaginary item after the last item in the set.
This function was introduced in Qt 5.0.
See Also▲
void QSet::clear()▲
QSet::const_iterator QSet::constBegin() const▲
Returns a const STL-style iterator positioned at the first item in the set.
See Also▲
QSet::const_iterator QSet::constEnd() const▲
Returns a const STL-style iterator pointing to the imaginary item after the last item in the set.
See Also▲
See also constBegin(), end()
[since 4.2] QSet::const_iterator QSet::constFind(const T &value) const▲
Returns a const iterator positioned at the item value in the set. If the set contains no item value, the function returns constEnd().
This function was introduced in Qt 4.2.
See Also▲
bool QSet::contains(const T &value) const▲
Returns true if the set contains item value; otherwise returns false.
See Also▲
[since 4.6] bool QSet::contains(const QSet<T> &other) const▲
Returns true if the set contains all items from the other set; otherwise returns false.
This function was introduced in Qt 4.6.
See Also▲
int QSet::count() const▲
Same as size().
[since 5.6] QSet::const_reverse_iterator QSet::crbegin() const▲
Returns a const STL-style reverse iterator pointing to the first item in the set, in reverse order.
This function was introduced in Qt 5.6.
See Also▲
[since 5.6] QSet::const_reverse_iterator QSet::crend() const▲
Returns a const STL-style reverse iterator pointing to one past the last item in the set, in reverse order.
This function was introduced in Qt 5.6.
See Also▲
bool QSet::empty() const▲
Returns true if the set is empty. This function is provided for STL compatibility. It is equivalent to isEmpty().
QSet::const_iterator QSet::end() const▲
Returns a const STL-style iterator positioned at the imaginary item after the last item in the set.
See Also▲
[since 4.2] QSet::iterator QSet::end()▲
This is an overloaded function.
Returns a non-const STL-style iterator pointing to the imaginary item after the last item in the set.
This function was introduced in Qt 4.2.
[since 5.7] QSet::iterator QSet::erase(QSet::const_iterator pos)▲
Removes the item at the iterator position pos from the set, and returns an iterator positioned at the next item in the set.
Unlike remove(), this function never causes QSet to rehash its internal data structure. This means that it can safely be called while iterating, and won't affect the order of items in the set.
This function was introduced in Qt 5.7.
See Also▲
[since 4.2] QSet::iterator QSet::erase(QSet::iterator pos)▲
This is an overloaded function.
This function was introduced in Qt 4.2.
[since 4.2] QSet::const_iterator QSet::find(const T &value) const▲
Returns a const iterator positioned at the item value in the set. If the set contains no item value, the function returns constEnd().
This function was introduced in Qt 4.2.