Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QLinkedList Class Reference

The QLinkedList class is a template class that provides linked lists. More...

 #include <QLinkedList>

Inherited by: Q3ValueList.

Note: All functions in this class are reentrant.

Public Types

class const_iterator
class iterator
typedef ConstIterator
typedef Iterator
typedef const_pointer
typedef const_reference
typedef difference_type
typedef pointer
typedef reference
typedef size_type
typedef value_type

Public Functions

QLinkedList ()
QLinkedList ( const QLinkedList<T> & other )
~QLinkedList ()
void append ( const T & value )
T & back ()
const T & back () const
iterator begin ()
const_iterator begin () const
void clear ()
const_iterator constBegin () const
const_iterator constEnd () const
bool contains ( const T & value ) const
int count ( const T & value ) const
int count () const
bool empty () const
iterator end ()
const_iterator end () const
bool endsWith ( const T & value ) const
iterator erase ( iterator pos )
iterator erase ( iterator begin, iterator end )
T & first ()
const T & first () const
T & front ()
const T & front () const
iterator insert ( iterator before, const T & value )
bool isEmpty () const
T & last ()
const T & last () const
void pop_back ()
void pop_front ()
void prepend ( const T & value )
void push_back ( const T & value )
void push_front ( const T & value )
int removeAll ( const T & value )
void removeFirst ()
void removeLast ()
bool removeOne ( const T & value )
int size () const
bool startsWith ( const T & value ) const
T takeFirst ()
T takeLast ()
std::list<T> toStdList () const
bool operator!= ( const QLinkedList<T> & other ) const
QLinkedList<T> operator+ ( const QLinkedList<T> & other ) const
QLinkedList<T> & operator+= ( const QLinkedList<T> & other )
QLinkedList<T> & operator+= ( const T & value )
QLinkedList<T> & operator<< ( const QLinkedList<T> & other )
QLinkedList<T> & operator<< ( const T & value )
QLinkedList<T> & operator= ( const QLinkedList<T> & other )
bool operator== ( const QLinkedList<T> & other ) const

Static Public Members

QLinkedList<T> fromStdList ( const std::list<T> & list )

Related Non-Members

QDataStream & operator<< ( QDataStream & out, const QLinkedList<T> & list )
QDataStream & operator>> ( QDataStream & in, QLinkedList<T> & list )

Detailed Description

The QLinkedList class is a template class that provides linked lists.

QLinkedList<T> is one of Qt's generic container classes. It stores a list of values and provides iterator-based access as well as constant time insertions and removals.

QList<T>, QLinkedList<T>, and QVector<T> provide similar functionality. Here's an overview:

  • For most purposes, QList is the right class to use. Its index-based API is more convenient than QLinkedList's iterator-based API, and it is usually faster than QVector because of the way it stores its items in memory (see Algorithmic Complexity for details). It also expands to less code in your executable.
  • If you need a real linked list, with guarantees of constant time insertions in the middle of the list and iterators to items rather than indexes, use QLinkedList.
  • If you want the items to occupy adjacent memory positions, use QVector.

Here's an example of a QLinkedList that stores integers and a QLinkedList that stores QTime values:

 QLinkedList<int> integerList;
 QLinkedList<QTime> timeList;

QLinkedList stores a list of items. The default constructor creates an empty list. To insert items into the list, you can use operator<<():

 QLinkedList<QString> list;
 list << "one" << "two" << "three";
 // list: ["one", "two", "three"]

If you want to get the first or last item in a linked list, use first() or last(). If you want to remove an item from either end of the list, use removeFirst() or removeLast(). If you want to remove all occurrences of a given value in the list, use removeAll().

A common requirement is to remove the first or last item in the list and do something with it. For this, QLinkedList provides takeFirst() and takeLast(). Here's a loop that removes the items from a list one at a time and calls delete on them:

 QLinkedList<QWidget *> list;
 ...
 while (!list.isEmpty())
     delete list.takeFirst();

QLinkedList's value type must be an 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 *. A few functions have additional requirements; for example, contains() and removeAll() expect the value type to support operator==(). These requirements are documented on a per-function basis.

If you want to insert, modify, or remove items in the middle of the list, you must use an iterator. QLinkedList provides both Java-style iterators (QLinkedListIterator and QMutableLinkedListIterator) and STL-style iterators (QLinkedList::const_iterator and QLinkedList::iterator). See the documentation for these classes for details.

See also QLinkedListIterator, QMutableLinkedListIterator, QList, and QVector.

Member Type Documentation

typedef QLinkedList::ConstIterator

Qt-style synonym for QLinkedList::const_iterator.

typedef QLinkedList::Iterator

Qt-style synonym for QLinkedList::iterator.

typedef QLinkedList::const_pointer

Typedef for const T *. Provided for STL compatibility.

typedef QLinkedList::const_reference

Typedef for const T &. Provided for STL compatibility.

typedef QLinkedList::difference_type

Typedef for ptrdiff_t. Provided for STL compatibility.

typedef QLinkedList::pointer

Typedef for T *. Provided for STL compatibility.

typedef QLinkedList::reference

Typedef for T &. Provided for STL compatibility.

typedef QLinkedList::size_type

Typedef for int. Provided for STL compatibility.

typedef QLinkedList::value_type

Typedef for T. Provided for STL compatibility.

Member Function Documentation

QLinkedList::QLinkedList ()

Constructs an empty list.

QLinkedList::QLinkedList ( const QLinkedList<T> & other )

Constructs a copy of other.

This operation occurs in constant time, because QLinkedList is implicitly shared. This makes returning a QLinkedList from a function very fast. If a shared instance is modified, it will be copied (copy-on-write), and this takes linear time.

See also operator=().

QLinkedList::~QLinkedList ()

Destroys the list. References to the values in the list, and all iterators over this list, become invalid.

void QLinkedList::append ( const T & value )

Inserts value at the end of the list.

Example:

 QLinkedList<QString> list;
 list.append("one");
 list.append("two");
 list.append("three");
 // list: ["one", "two", "three"]

This is the same as list.insert(end(), value).

See also operator<<(), prepend(), and insert().

T & QLinkedList::back ()

This function is provided for STL compatibility. It is equivalent to last().

const T & QLinkedList::back () const

This is an overloaded function.

iterator QLinkedList::begin ()

Returns an STL-style iterator pointing to the first item in the list.

See also constBegin() and end().

const_iterator QLinkedList::begin () const

This is an overloaded function.

void QLinkedList::clear ()

Removes all the items in the list.

See also removeAll().

const_iterator QLinkedList::constBegin () const

Returns a const STL-style iterator pointing to the first item in the list.

See also begin() and constEnd().

const_iterator QLinkedList::constEnd () const

Returns a const STL-style iterator pointing to the imaginary item after the last item in the list.

See also constBegin() and end().

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

Returns true if the list contains an occurrence of value; otherwise returns false.

This function requires the value type to have an implementation of operator==().

See also QLinkedListIterator::findNext() and QLinkedListIterator::findPrevious().

int QLinkedList::count ( const T & value ) const

Returns the number of occurrences of value in the list.

This function requires the value type to have an implementation of operator==().

See also contains().

int QLinkedList::count () const

Same as size().

bool QLinkedList::empty () const

This function is provided for STL compatibility. It is equivalent to isEmpty() and returns true if the list is empty.

iterator QLinkedList::end ()

Returns an STL-style iterator pointing to the imaginary item after the last item in the list.

See also begin() and constEnd().

const_iterator QLinkedList::end () const

This is an overloaded function.

bool QLinkedList::endsWith ( const T & value ) const

Returns true if the list is not empty and its last item is equal to value; otherwise returns false.

This function was introduced in Qt 4.5.

See also isEmpty() and last().

iterator QLinkedList::erase ( iterator pos )

Removes the item pointed to by the iterator pos from the list, and returns an iterator to the next item in the list (which may be end()).

See also insert().

iterator QLinkedList::erase ( iterator begin, iterator end )

This is an overloaded function.

Removes all the items from begin up to (but not including) end.

T & QLinkedList::first ()

Returns a reference to the first item in the list. This function assumes that the list isn't empty.

See also last() and isEmpty().

const T & QLinkedList::first () const

This is an overloaded function.

QLinkedList<T> QLinkedList::fromStdList ( const std::list<T> & list ) [static]

Returns a QLinkedList object with the data contained in list. The order of the elements in the QLinkedList is the same as in list.

Example:

 std::list<double> stdlist;
 list.push_back(1.2);
 list.push_back(0.5);
 list.push_back(3.14);

 QLinkedList<double> list = QLinkedList<double>::fromStdList(stdlist);

This function was introduced in Qt 4.1.

See also toStdList().

T & QLinkedList::front ()

This function is provided for STL compatibility. It is equivalent to first().

const T & QLinkedList::front () const

This is an overloaded function.

iterator QLinkedList::insert ( iterator before, const T & value )

Inserts value in front of the item pointed to by the iterator before. Returns an iterator pointing at the inserted item.

See also erase().

bool QLinkedList::isEmpty () const

Returns true if the list contains no items; otherwise returns false.

See also size().

T & QLinkedList::last ()

Returns a reference to the last item in the list. This function assumes that the list isn't empty.

See also first() and isEmpty().

const T & QLinkedList::last () const

This is an overloaded function.

void QLinkedList::pop_back ()

This function is provided for STL compatibility. It is equivalent to removeLast().

void QLinkedList::pop_front ()

This function is provided for STL compatibility. It is equivalent to removeFirst().

void QLinkedList::prepend ( const T & value )

Inserts value at the beginning of the list.

Example:

 QLinkedList<QString> list;
 list.prepend("one");
 list.prepend("two");
 list.prepend("three");
 // list: ["three", "two", "one"]

This is the same as list.insert(begin(), value).

See also append() and insert().

void QLinkedList::push_back ( const T & value )

This function is provided for STL compatibility. It is equivalent to append(value).

void QLinkedList::push_front ( const T & value )

This function is provided for STL compatibility. It is equivalent to prepend(value).

int QLinkedList::removeAll ( const T & value )

Removes all occurrences of value in the list.

Example:

 QList<QString> list;
 list << "sun" << "cloud" << "sun" << "rain";
 list.removeAll("sun");
 // list: ["cloud", "rain"]

This function requires the value type to have an implementation of operator==().

See also insert().

void QLinkedList::removeFirst ()

Removes the first item in the list.

This is the same as erase(begin()).

See also removeLast() and erase().

void QLinkedList::removeLast ()

Removes the last item in the list.

See also removeFirst() and erase().

bool QLinkedList::removeOne ( const T & value )

Removes the first occurrences of value in the list. Returns true on success; otherwise returns false.

Example:

 QList<QString> list;
 list << "sun" << "cloud" << "sun" << "rain";
 list.removeOne("sun");
 // list: ["cloud", "sun", "rain"]

This function requires the value type to have an implementation of operator==().

This function was introduced in Qt 4.4.

See also insert().

int QLinkedList::size () const

Returns the number of items in the list.

See also isEmpty() and count().

bool QLinkedList::startsWith ( const T & value ) const

Returns true if the list is not empty and its first item is equal to value; otherwise returns false.

This function was introduced in Qt 4.5.

See also isEmpty() and first().

T QLinkedList::takeFirst ()

Removes the first item in the list and returns it.

If you don't use the return value, removeFirst() is more efficient.

See also takeLast() and removeFirst().

T QLinkedList::takeLast ()

Removes the last item in the list and returns it.

If you don't use the return value, removeLast() is more efficient.

See also takeFirst() and removeLast().

std::list<T> QLinkedList::toStdList () const

Returns a std::list object with the data contained in this QLinkedList. Example:

 QLinkedList<double> list;
 list << 1.2 << 0.5 << 3.14;

 std::list<double> stdlist = list.toStdList();

This function was introduced in Qt 4.1.

See also fromStdList().

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

Returns true if other is not equal to this list; otherwise returns false.

Two lists are considered equal if they contain the same values in the same order.

This function requires the value type to implement operator==().

See also operator==().

QLinkedList<T> QLinkedList::operator+ ( const QLinkedList<T> & other ) const

Returns a list that contains all the items in this list followed by all the items in the other list.

See also operator+=().

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

Appends the items of the other list to this list and returns a reference to this list.

See also operator+() and append().

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

This is an overloaded function.

Appends value to the list.

QLinkedList<T> & QLinkedList::operator<< ( const QLinkedList<T> & other )

Appends the items of the other list to this list and returns a reference to this list.

See also operator+=() and append().

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

This is an overloaded function.

Appends value to the list.

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

Assigns other to this list and returns a reference to this list.

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

Returns true if other is equal to this list; otherwise returns false.

Two lists are considered equal if they contain the same values in the same order.

This function requires the value type to implement operator==().

See also operator!=().

Related Non-Members

QDataStream & operator<< ( QDataStream & out, const QLinkedList<T> & list )

Writes the linked list list to stream out.

This function requires the value type to implement operator<<().

See also Format of the QDataStream operators.

QDataStream & operator>> ( QDataStream & in, QLinkedList<T> & list )

Reads a linked list from stream in into list.

This function requires the value type to implement operator>>().

See also Format of the QDataStream operators.

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 69
  2. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 27
  3. Une nouvelle ère d'IHM 3D pour les automobiles, un concept proposé par Digia et implémenté avec Qt 3
  4. Qt Creator 2.5 est sorti en beta, l'EDI supporte maintenant plus de fonctionnalités de C++11 2
  5. Vingt sociétés montrent leurs décodeurs basés sur Qt au IPTV World Forum, en en exploitant diverses facettes (déclaratif, Web, widgets) 0
  6. PySide devient un add-on Qt et rejoint le Qt Project et le modèle d'open gouvernance 1
  7. Thread travailleur avec Qt en utilisant les signaux et les slots, un article de Christophe Dumez traduit par Thibaut Cuvelier 1
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 101
  2. Apercevoir la troisième dimension ou l'utilisation multithreadée d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 51
  4. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 69
  5. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 27
  6. Qt Commercial : Digia organise un webinar gratuit le 27 mars sur la conception d'interfaces utilisateur et d'applications avec le framework 0
  7. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
Page suivante

Le Qt Labs au hasard

Logo

Le moteur de rendu OpenGL

Les Qt Labs sont les laboratoires des développeurs de Qt, où ils peuvent partager des impressions sur le framework, son utilisation, ce que pourrait être son futur. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7-snapshot
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web