QMapIterator - Iterator for
#include <qmap.h>
Public Members
QMapIterator ()
QMapIterator ( QMapNode<K, T> * p )
QMapIterator ( const QMapIterator<K,T> & it )
bool operator== ( const QMapIterator<K,T> & it ) const
bool operator!= ( const QMapIterator<K,T> & it ) const
T& operator* ()
const T& operator* () const
const K& key () const
T& data ()
const T& data () const
DESCRIPTION
The QMapIterator class provides an iterator for QMap.
You can not create an iterator by yourself. Instead you
have to ask a map to give you one. An iterator has only
the size of a pointer. On 32 bit machines that means 4
bytes otherwise 8 bytes. That makes them very fast. In
fact they resemble the semantics of pointers as good as
possible and they are almost as fast as usual pointers.
Example:
#include <qmap.h>
#include <qstring.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;
};
void main()
{
typedef QMap<QString,Employee> EmployeeMap;
EmployeeMap map; // map of Employee
map.insert( "Gates", Employee("Bill", 50000) );
map.insert( "Ballmer", Employee("Steve",80000) );
map.insert( "Sommer,", Employee("Ron", 60000) );
map.insert( "Doe", joe );
joe.setSalary( 4000 );
EmployeeMap::Iterator it;
for( it = map.begin(); it != map.end(); ++it )
printf( "%s, %s earns %d\n", it.key().latin1(), it.data().name().latin1(), it.data().salary() );
}
Program output:
Ballmer, Steve earns 80000
Doe, Joe earns 50000
Gates, Bill earns 50000
Sommer, Ron earns 60000
The only way to traverse a map is to use iterators. QMap
is highly optimized for performance and memory usage. On
the other hand that means that you have to be a bit more
careful by what you are doing. QMap does not know about
all its iterators and the iterators don't even know to
which map they belong. That makes things fast and slim but
a bit dangerous because it is up to you to make sure that
iterators you are using are still valid. QDictIterator
will be able to give warnings while QMapIterator may end
up in an undefined state.
For every Iterator there is a ConstIterator. When
accessing a QMap in a const environment or if the
reference or pointer to the map is itself const, then you
have to use the ConstIterator. Its semantics are the same,
but it returns only const references to the item it points
to.
See also QMap.
MEMBER FUNCTION DOCUMENTATION
QMapIterator::QMapIterator ()
Creates an uninitialized iterator.
QMapIterator::QMapIterator ( QMapNode * p )
Constructs an iterator starting at node p.
QMapIterator::QMapIterator ( const QMapIterator & it )
Constructs a copy of the iterator.
T& QMapIterator::data ()
Returns a reference to the current item.
const T& QMapIterator::data () const
Returns a const reference to the data of the current item.
const K& QMapIterator::key () const
Returns a const reference to the data of the current key.
const
Compares both iterators and returns TRUE if they point to
different items.
T& QMapIterator::operator* ()
Asterix operator. Returns a reference to the current item.
The same as data().
const T& QMapIterator::operator* () const
Asterix operator. Returns a const reference to the current
item. The same as data().
bool QMapIterator::operator== ( const QMapIterator & it )
const
Compares both iterators and returns TRUE if they point to
the same item.
SEE ALSO
http://doc.trolltech.com/qmapiterator.html
http://www.trolltech.com/faq/tech.html
COPYRIGHT
Copyright 1992-2001 Trolltech AS,
http://www.trolltech.com. See the license file included
in the distribution for a complete license statement.
AUTHOR
Generated automatically from the source code.
BUGS
If you find a bug in Qt, please report it as described in
http://doc.trolltech.com/bughowto.html. Good bug reports
make our job much simpler. Thank you.
In case of content or formattting problems with this
manual page, please report them to qt-bugs@trolltech.com.
Please include the name of the manual page
(qmapiterator.3qt) and the Qt version (2.3.1).
Man(1) output converted with
man2html