Classes - Annotated - Tree - Functions - Home - Structure

QValueListIterator Class Reference

The QValueListIterator class provides an iterator for QValueList. More...

#include <qvaluelist.h>

List of all member functions.

Public Members


Detailed Description

The QValueListIterator class provides an iterator for QValueList.

An iterator is a class for accessing the elements of a container classes - a generalization of the index in an array. A pointer into a const char * and an index into an int[] are both iterators, and the general idea is to provide that functionality for any data structure.

The QValueListIterator class is an iterator for QValueList instantiations. You can create the appropriate iterator type by using the iterator typedef provided by QValueList. For example:

/****************************************************************************
** $Id:  qt/qvaluelistiterator.cpp   3.0.0-beta1-beta1   edited May 10 15:09 $
**
** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
**
** This file is part of an example program for Qt.  This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/

#include <qvaluelist.h>
#include <qstring.h>
#include <qwindowdefs.h>
#include <stdio.h>


class Employee
{
public:
    Employee(): s(0) {}
    Employee( const QString& name, int salary )
        : n(name), s(salary) {}

    QString name() const { return n; }

    int salary() const { return s; }
    void setSalary( int salary ) { s = salary; }
private:
    QString n;
    int s;
};


int main( int, char** )
{
    typedef QValueList<Employee> EmployeeList;
    EmployeeList list;

    list.append( Employee("Bill", 50000) );
    list.append( Employee("Steve",80000) );
    list.append( Employee("Ron",  60000) );

    Employee joe( "Joe", 50000 );
    list.append( joe );
    joe.setSalary( 4000 );

    EmployeeList::ConstIterator it = list.begin();
    while( it != list.end() ) {
        printf( "%s earns %d\n", (*it).name().latin1(), (*it).salary() );
        ++it;
    }

    return 0;
}

Program output:

        Bill earns 50000
        Steve earns 80000
        Ron earns 60000
        Joe earns 50000
  

The only way to access the elements in a QValueList is to use an iterator.

QValueList is highly optimized for performance and memory usage. This means you have to be careful with what you are doing. QValueList does not know about all its iterators and the iterators don't know to which list they belong. That makes things very fast, but if you're not careful, you can get spectacular bugs. Always make sure iterators are valid before dereferencing them or using them as parameters to generic algorithms in the STL or the QTL.

Using an invalid iterator is undefined (your application will probably crash).

For every Iterator there is a ConstIterator. When accessing a QValueList in a const environment or if the reference or pointer to the list is itself const, then you have to use the ConstIterator. Its semantics are the same as the Iterator, but it returns only const references.

See also QValueList and QValueListConstIterator.


Member Type Documentation

QValueListIterator::pointer

Pointer to value_type.

QValueListIterator::reference

Reference to value_type.

QValueListIterator::value_type

The type of value, T.

Member Function Documentation

QValueListIterator::QValueListIterator ()

Creates un uninitialized iterator.

QValueListIterator::QValueListIterator ( NodePtr p )

Internal function.

QValueListIterator::QValueListIterator ( const QValueListIterator<T> & it )

Constructs a copy of the iterator it.

bool QValueListIterator::operator!= ( const QValueListIterator<T> & it ) const

Compares both iterators and returns TRUE if they point to different items.

const T & QValueListIterator::operator* () const

Asterisk operator. Returns a reference to the current iterator item.

T & QValueListIterator::operator* ()

Asterisk operator. Returns a reference to the current iterator item.

QValueListIterator<T> & QValueListIterator::operator++ ()

Prefix ++ makes the succeeding item current and returns an iterator pointing to the new current item. The iterator cannot check whether it reached the end of the list. Incrementing the iterator as returned by end() causes undefined results.

QValueListIterator<T> QValueListIterator::operator++ ( int )

Postfix ++ makes the succeeding item current and returns an iterator pointing to the new current item. The iterator cannot check whether it reached the end of the list. Incrementing the iterator as returned by end() causes undefined results.

QValueListIterator<T> & QValueListIterator::operator-- ()

Prefix -- makes the previous item current and returns an iterator pointing to the new current item. The iterator cannot check whether it reached the beginning of the list. Decrementing the iterator as returned by begin() causes undefined results.

QValueListIterator<T> QValueListIterator::operator-- ( int )

Postfix -- makes the previous item current and returns an iterator pointing to the new current item. The iterator cannot check whether it reached the beginning of the list. Decrementing the iterator as returned by begin() causes undefined results.

bool QValueListIterator::operator== ( const QValueListIterator<T> & it ) const

Compares both iterators and returns TRUE if they point to the same item.

Search the documentation, FAQ, qt-interest archive and more (uses www.trolltech.com):


This file is part of the Qt toolkit, copyright © 1995-2001 Trolltech, all rights reserved.


Copyright © 2001 TrolltechTrademarks
Qt version 3.0.0-beta1-beta1