Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
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.
 
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 >
 QList (DataPointer dd) noexcept
 
 QList ()=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))
 
qsizetype size () const noexcept
 
qsizetype count () const noexcept
 
qsizetype length () const noexcept
 
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 ()
 
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 qsizetype max_size () noexcept
 
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 >
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 18 of file qstack.h.

References QList< T >::takeLast().

Referenced by CPP::WriteInitialization::acceptActionGroup(), CPP::WriteInitialization::acceptLayout(), CPP::WriteInitialization::acceptUI(), CPP::WriteInitialization::acceptWidget(), QTextMarkdownImporter::cbLeaveBlock(), QTextMarkdownImporter::cbLeaveSpan(), QWindowsDirect2DPaintEnginePrivate::clearClips(), QCborStreamWriterPrivate::closeContainer(), QQuickDeliveryAgentPrivate::deliverPointerEvent(), QSvgHandler::endElement(), QXcbBackingStore::endPaint(), QSGOpenVGNodeVisitor::endVisit(), QSGSoftwareRenderableNodeUpdater::endVisit(), QSGOpenVGNodeVisitor::endVisit(), QSGSoftwareRenderableNodeUpdater::endVisit(), QSGOpenVGNodeVisitor::endVisit(), QSGSoftwareRenderableNodeUpdater::endVisit(), QQuickItemGenerator::generateImageNode(), QQuickItemGenerator::generatePath(), QQuickItemGenerator::generateRootNode(), QQuickItemGenerator::generateStructureNode(), QQuickItemGenerator::generateTextNode(), QQuickItemGenerator::generateUseNode(), QCborStreamReader::leaveContainer(), QSvgHandler::popColor(), QQuickStackViewPrivate::popElements(), QQuickContext2D::popState(), QQuickStackViewPrivate::popToItem(), QQmlProfilerClientPrivate::processCurrentEvent(), QQuickStackViewPrivate::replaceElements(), QAbstractItemModelTesterPrivate::rowsInserted(), QAbstractItemModelTesterPrivate::rowsRemoved(), QV4ProfilerAdapter::sendMessages(), Automaton::visitIncludeNode(), Automaton::visitReadNode(), and QTextOdfWriter::writeBlock().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ push()

template<class T >
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.

References QList< T >::append().

Referenced by QSGOpenVGNodeVisitor::QSGOpenVGNodeVisitor(), QSGSoftwareRenderableNodeUpdater::QSGSoftwareRenderableNodeUpdater(), CPP::WriteInitialization::acceptActionGroup(), CPP::WriteInitialization::acceptLayout(), CPP::WriteInitialization::acceptUI(), CPP::WriteInitialization::acceptWidget(), QSettingsPrivate::beginGroupOrArray(), QXcbBackingStore::beginPaint(), QTextMarkdownImporter::cbEnterBlock(), QTextMarkdownImporter::cbEnterSpan(), QTextMarkdownImporter::cbLeaveBlock(), QCborStreamWriterPrivate::createContainer(), QQuickDeliveryAgentPrivate::deliverPointerEvent(), QQuickStackViewPrivate::popToItem(), QQmlProfilerClientPrivate::processCurrentEvent(), QWindowsDirect2DPaintEnginePrivate::pushClip(), QSvgHandler::pushColor(), QQuickContext2D::pushState(), QQuickContext2D::reset(), QAbstractItemModelTesterPrivate::rowsAboutToBeInserted(), QAbstractItemModelTesterPrivate::rowsAboutToBeRemoved(), QV4ProfilerAdapter::sendMessages(), QSvgHandler::startElement(), QSGSoftwareRenderableNodeUpdater::updateNodes(), QSGOpenVGNodeVisitor::visit(), QSGSoftwareRenderableNodeUpdater::visit(), QSGOpenVGNodeVisitor::visit(), QSGSoftwareRenderableNodeUpdater::visit(), QSGOpenVGNodeVisitor::visit(), QSGSoftwareRenderableNodeUpdater::visit(), Automaton::visitIncludeNode(), Automaton::visitReadNode(), and QTextOdfWriter::writeBlock().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ swap()

template<class T >
template< class T > void QStack< T >::swap ( QStack< T > & other)
inlinenoexcept
Since
4.8

Swaps stack other with this stack. This operation is very fast and never fails.

Definition at line 16 of file qstack.h.

References other(), and QList< T >::swap().

+ Here is the call graph for this function:

◆ top() [1/2]

template<class T >
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 19 of file qstack.h.

References QList< T >::last().

Referenced by CPP::WriteInitialization::acceptAction(), CPP::WriteInitialization::acceptActionGroup(), CPP::WriteInitialization::acceptActionRef(), CPP::WriteInitialization::acceptLayout(), CPP::WriteInitialization::acceptLayoutItem(), CPP::WriteInitialization::acceptWidget(), QTextMarkdownImporter::cbEnterSpan(), QTextMarkdownImporter::cbLeaveSpan(), QTextMarkdownImporter::cbText(), QSvgHandler::characters(), QCborStreamWriterPrivate::createContainer(), QSvgHandler::currentColor(), QSvgHandler::endElement(), QSGSoftwareRenderableNodeUpdater::endVisit(), QQuickDeliveryAgentPrivate::eventInDelivery(), QQmlProfilerClientPrivate::finalize(), QQuickDeliveryAgentPrivate::mousePointData(), QSvgHandler::popColor(), QQuickStackViewPrivate::popElements(), QQuickStackViewPrivate::popToItem(), QQmlProfilerClientPrivate::processCurrentEvent(), QSvgHandler::pushColorCopy(), QQuickStackViewPrivate::pushElements(), QQuickDeliveryAgentPrivate::removeGrabber(), QQmlProfilerClientPrivate::resolveStackTop(), QV4ProfilerAdapter::sendMessages(), QSvgHandler::startElement(), QSGSoftwareRenderableNodeUpdater::visit(), QSGOpenVGNodeVisitor::visit(), QSGSoftwareRenderableNodeUpdater::visit(), QSGOpenVGNodeVisitor::visit(), QSGSoftwareRenderableNodeUpdater::visit(), Automaton::visitIncludeNode(), Automaton::visitReadNode(), and QTextOdfWriter::writeBlock().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ top() [2/2]

template<class T >
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 20 of file qstack.h.

References QList< T >::last().

+ Here is the call graph for this function:

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