![]() |
| ||
Classes - Annotated - Tree - Functions - Home - Structure |
The QMapIterator class provides an iterator for QMap. More...
#include <qmap.h>
You cannot create an iterator by yourself. Instead, you have to ask a map to give you one. An iterator is as big as a pointer; on 32-bit machines that means 4 bytes, on 64-bit ones 8 bytes. That makes copying them very fast. They resemble the semantics of pointers as much 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; }; int 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) ); Employee joe( "Joe", 50000 ); 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() ); return 0; }
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 this means that you have to be a bit more careful with 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 but a bit dangerous because it is up to you to make sure that the iterators you are using are still valid. QDictIterator will be able to give warnings, whereas QMapIterator may end up in an undefined state.
For every Iterator there is also a ConstIterator. You have to use the ConstIterator to access a QMap in a const environment or if the reference or pointer to the map is itself const. Its semantics are the same, but it returns only const references to the item it points to.
See also QMap.
Returns a reference to the current item.
Returns a const reference to the data of the current item.
Returns a const reference to the data of the current key.
Compares both iterators and returns TRUE if they point to different items.
Asterix operator. Returns a reference to the current item. The same as data().
Asterix operator. Returns a const reference to the current item. The same as data().
Prefix ++ makes the succeeding item current and returns an iterator pointing to the new current item. The iterator can not check whether it reached the end of the map. Incrementing the iterator as returned by end() causes undefined results.
Postfix ++ makes the succeeding item current and returns an iterator pointing to the new current item. The iterator can not check whether it reached the end of the map. Incrementing the iterator as returned by end() causes undefined results.
Prefix -- makes the previous item current and returns an iterator pointing to the new current item. The iterator can not check whether it reached the beginning of the map. Decrementing the iterator as returned by begin() causes undefined results.
Postfix -- makes the previous item current and returns an iterator pointing to the new current item. The iterator can not check whether it reached the beginning of the map. Decrementing the iterator as returned by begin() causes undefined results.
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 Trolltech | Trademarks | Qt version 3.0.0-beta1-beta1
|