Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QStack< T > Class Template Reference

\inmodule QtCore More...

#include <qstack.h>

Inheritance diagram for QStack< T >:
Collaboration diagram for QStack< T >:

Public Member Functions

void swap (QStack< T > &other) noexcept
void push (const T &t)
 Adds element t to the top of the stack.
void push (T &&t)
pop ()
 Removes the top item from the stack and returns it.
T & top ()
 Returns a reference to the stack's top item.
const T & top () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Public Member Functions inherited from QList< T >
DataPointerdata_ptr () &
const DataPointerdata_ptr () const &
DataPointer && data_ptr () &&
 QList (DataPointer dd) noexcept
constexpr QList () noexcept=default
 QList (qsizetype size)
 QList (qsizetype size, parameter_type t)
 QList (std::initializer_list< T > args)
QList< T > & operator= (std::initializer_list< T > args)
template<typename InputIterator, if_input_iterator< InputIterator > = true>
 QList (InputIterator i1, InputIterator i2)
template<typename String, typename = std::enable_if_t<std::is_same_v<T, QString> && std::is_convertible_v<String, QString>>>
 QList (const String &str)
 QList (qsizetype size, Qt::Initialization)
void swap (QList &other) noexcept
template<typename U = T>
QTypeTraits::compare_eq_result_container< QList, U > operator== (const QList &other) const
template<typename U = T>
QTypeTraits::compare_eq_result_container< QList, U > operator!= (const QList &other) const
template<typename U = T>
QTypeTraits::compare_lt_result_container< QList, U > operator< (const QList &other) const noexcept(noexcept(std::lexicographical_compare< typename QList< U >::const_iterator, typename QList::const_iterator >(std::declval< QList< U > >().begin(), std::declval< QList< U > >().end(), other.begin(), other.end())))
template<typename U = T>
QTypeTraits::compare_lt_result_container< QList, U > operator> (const QList &other) const noexcept(noexcept(other< std::declval< QList< U > >()))
template<typename U = T>
QTypeTraits::compare_lt_result_container< QList, U > operator<= (const QList &other) const noexcept(noexcept(other< std::declval< QList< U > >()))
template<typename U = T>
QTypeTraits::compare_lt_result_container< QList, U > operator>= (const QList &other) const noexcept(noexcept(std::declval< QList< U > >()< other))
constexpr qsizetype size () const noexcept
constexpr qsizetype count () const noexcept
constexpr qsizetype length () const noexcept
constexpr bool isEmpty () const noexcept
void resize (qsizetype size)
void resize (qsizetype size, parameter_type c)
void resizeForOverwrite (qsizetype size)
qsizetype capacity () const
void reserve (qsizetype size)
void squeeze ()
void detach ()
bool isDetached () const noexcept
bool isSharedWith (const QList< T > &other) const
pointer data ()
const_pointer data () const noexcept
const_pointer constData () const noexcept
void clear ()
const_reference at (qsizetype i) const noexcept
reference operator[] (qsizetype i)
const_reference operator[] (qsizetype i) const noexcept
void append (parameter_type t)
void append (const_iterator i1, const_iterator i2)
void append (rvalue_ref t)
void append (const QList< T > &l)
void append (QList< T > &&l)
void prepend (rvalue_ref t)
void prepend (parameter_type t)
template<typename... Args>
reference emplaceBack (Args &&... args)
template<typename ... Args>
reference emplaceFront (Args &&... args)
iterator insert (qsizetype i, parameter_type t)
iterator insert (qsizetype i, qsizetype n, parameter_type t)
iterator insert (const_iterator before, parameter_type t)
iterator insert (const_iterator before, qsizetype n, parameter_type t)
iterator insert (const_iterator before, rvalue_ref t)
iterator insert (qsizetype i, rvalue_ref t)
QListassign (qsizetype n, parameter_type t)
template<typename InputIterator, if_input_iterator< InputIterator > = true>
QListassign (InputIterator first, InputIterator last)
QListassign (std::initializer_list< T > l)
template<typename ... Args>
iterator emplace (const_iterator before, Args &&... args)
template<typename ... Args>
iterator emplace (qsizetype i, Args &&... args)
void replace (qsizetype i, parameter_type t)
void replace (qsizetype i, rvalue_ref t)
void remove (qsizetype i, qsizetype n=1)
void removeFirst () noexcept
void removeLast () noexcept
value_type takeFirst ()
value_type takeLast ()
QList< T > & fill (parameter_type t, qsizetype size=-1)
template<typename AT = T>
qsizetype count (const AT &t) const noexcept
void removeAt (qsizetype i)
template<typename AT = T>
qsizetype removeAll (const AT &t)
template<typename AT = T>
bool removeOne (const AT &t)
template<typename Predicate>
qsizetype removeIf (Predicate pred)
takeAt (qsizetype i)
void move (qsizetype from, qsizetype to)
iterator begin ()
iterator end ()
const_iterator begin () const noexcept
const_iterator end () const noexcept
const_iterator cbegin () const noexcept
const_iterator cend () const noexcept
const_iterator constBegin () const noexcept
const_iterator constEnd () const noexcept
reverse_iterator rbegin ()
reverse_iterator rend ()
const_reverse_iterator rbegin () const noexcept
const_reverse_iterator rend () const noexcept
const_reverse_iterator crbegin () const noexcept
const_reverse_iterator crend () const noexcept
iterator erase (const_iterator begin, const_iterator end)
iterator erase (const_iterator pos)
T & first ()
const T & first () const noexcept
const T & constFirst () const noexcept
T & last ()
const T & last () const noexcept
const T & constLast () const noexcept
bool startsWith (parameter_type t) const
bool endsWith (parameter_type t) const
QList< T > mid (qsizetype pos, qsizetype len=-1) const
QList< T > first (qsizetype n) const
QList< T > last (qsizetype n) const
QList< T > sliced (qsizetype pos) const
QList< T > sliced (qsizetype pos, qsizetype n) const
value (qsizetype i) const
value (qsizetype i, parameter_type defaultValue) const
void swapItemsAt (qsizetype i, qsizetype j)
void push_back (parameter_type t)
void push_back (rvalue_ref t)
void push_front (rvalue_ref t)
void push_front (parameter_type t)
void pop_back () noexcept
void pop_front () noexcept
template<typename ... Args>
reference emplace_back (Args &&... args)
bool empty () const noexcept
reference front ()
const_reference front () const noexcept
reference back ()
const_reference back () const noexcept
void shrink_to_fit ()
constexpr qsizetype max_size () const noexcept
QList< T > & operator+= (const QList< T > &l)
QList< T > & operator+= (QList< T > &&l)
QList< T > operator+ (const QList< T > &l) const &
QList< T > operator+ (const QList< T > &l) &&
QList< T > operator+ (QList< T > &&l) const &
QList< T > operator+ (QList< T > &&l) &&
QList< T > & operator+= (parameter_type t)
QList< T > & operator<< (parameter_type t)
QList< T > & operator<< (const QList< T > &l)
QList< T > & operator<< (QList< T > &&l)
QList< T > & operator+= (rvalue_ref t)
QList< T > & operator<< (rvalue_ref t)
QList< T > toList () const noexcept
QList< T > toVector () const noexcept
Public Member Functions inherited from QListSpecialMethodsBase< T >
template<typename AT = T>
qsizetype indexOf (const AT &t, qsizetype from=0) const noexcept
template<typename AT = T>
qsizetype lastIndexOf (const AT &t, qsizetype from=-1) const noexcept
template<typename AT = T>
bool contains (const AT &t) const noexcept

Additional Inherited Members

Public Types inherited from QList< T >
using Type = T
using value_type = T
using pointer = T *
using const_pointer = const T *
using reference = T &
using const_reference = const T &
using size_type = qsizetype
using difference_type = qptrdiff
using parameter_type = typename DataPointer::parameter_type
using rvalue_ref = typename std::conditional<DataPointer::pass_parameter_by_value, DisableRValueRefs, T &&>::type
using Iterator = iterator
using ConstIterator = const_iterator
using reverse_iterator = std::reverse_iterator<iterator>
using const_reverse_iterator = std::reverse_iterator<const_iterator>
Static Public Member Functions inherited from QList< T >
static constexpr qsizetype maxSize ()
static QList< T > fromList (const QList< T > &list) noexcept
static QList< T > fromVector (const QList< T > &vector) noexcept
template<qsizetype N>
static QList< T > fromReadOnlyData (const T(&t)[N]) noexcept
Protected Types inherited from QListSpecialMethodsBase< T >
using Self = QList<T>
Protected Member Functions inherited from QListSpecialMethods< T >
 QListSpecialMethods ()=default
Protected Member Functions inherited from QListSpecialMethodsBase< T >
 QListSpecialMethodsBase ()=default
Selfself ()
const Selfself () const

Detailed Description

template<class T>
class QStack< T >

\inmodule QtCore

The QStack class is a template class that provides a stack.

\reentrant

QStack<T> is one of Qt's generic \l{container classes}. It implements a stack data structure for items of a same type.

A stack is a last in, first out (LIFO) structure. Items are added to the top of the stack using push() and retrieved from the top using pop(). The top() function provides access to the topmost item without removing it.

Example:

QStack<int> stack;
stack.push(1);
stack.push(2);
stack.push(3);
while (!stack.isEmpty())
cout << stack.pop() << Qt::endl;

The example will output 3, 2, 1 in that order.

QStack inherits from QList. All of QList's functionality also applies to QStack. For example, you can use isEmpty() to test whether the stack is empty, and you can traverse a QStack using QList's iterator classes (for example, QListIterator). But in addition, QStack provides three convenience functions that make it easy to implement LIFO semantics: push(), pop(), and top().

QStack's value type must be an \l{assignable data type}. This covers most data types that are commonly used, but the compiler won't let you, for example, store a QWidget as a value; instead, store a QWidget *.

See also
QList, QQueue

Definition at line 12 of file qstack.h.

Member Function Documentation

◆ pop()

template<class T>
T QStack< T >::pop ( )
inline

Removes the top item from the stack and returns it.

This function assumes that the stack isn't empty.

See also
top(), push(), isEmpty()

Definition at line 19 of file qstack.h.

◆ push() [1/2]

template<class T>
void QStack< T >::push ( const T & t)
inline

Adds element t to the top of the stack.

This is the same as QList::append().

See also
pop(), top()

Definition at line 17 of file qstack.h.

◆ push() [2/2]

template<class T>
void QStack< T >::push ( T && t)
inline
Since
6.11

Adds element t to the top of the stack.

This is the same as QList::append().

See also
pop(), top()

Definition at line 18 of file qstack.h.

◆ swap()

template<class T>
void QStack< T >::swap ( QStack< T > & other)
inlinenoexcept
Since
4.8 \memberswap{stack}

Definition at line 16 of file qstack.h.

◆ top() [1/2]

template<class T>
T & QStack< T >::top ( )
inline

Returns a reference to the stack's top item.

This function assumes that the stack isn't empty.

This is the same as QList::last().

See also
pop(), push(), isEmpty()

Definition at line 20 of file qstack.h.

◆ top() [2/2]

template<class T>
const T & QStack< T >::top ( ) const
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

See also
pop(), push()

Definition at line 21 of file qstack.h.


The documentation for this class was generated from the following files: