CopperSpice API  1.7.2
QMutableMultiMapIterator< Key, Val, C > Class Template Reference

Java style non-const iterator for QMultiMap. More...

Public Methods

 QMutableMultiMapIterator (QMultiMap< Key, Val, C > &map)
 
 ~QMutableMultiMapIterator ()
 
bool findNext (const Val &value)
 
bool findPrevious (const Val &value)
 
bool hasNext () const
 
bool hasPrevious () const
 
const Key & key () const
 
Item next ()
 
QMutableMultiMapIterator & operator= (QMultiMap< Key, Val, C > &map)
 
Item peekNext () const
 
Item peekPrevious () const
 
Item previous ()
 
void remove ()
 
void setValue (const Val &value) const
 
void toBack ()
 
void toFront ()
 
Val & value ()
 
const Val & value () const
 

Detailed Description

template<class Key, class Val, class C = qMapCompare<Key>>
class QMutableMultiMapIterator< Key, Val, C >

The QMutableMultiMapIterator class provides a Java style non-const iterator for QMultiMap. QMultiMap has both Java style iterators and STL style iterators.

QMutableMultiMapIterator allows you to iterate over a QMultiMap and modify the map. If you do not want to modify the map use QMultiMapIterator instead.

After construction the iterator is located at the very beginning of the map, before the first item. The following code shows how to iterate over all the elements sequentially.

while (iter.hasNext()) {
iter.next();
qDebug() << iter.key() << ": " << iter.value();
}

The next() method returns the next item in the map and advances the iterator. The key() and value() methods return the key and value of the last item that was jumped over.

Unlike STL style iterators, Java style iterators point between items rather than directly at items. The first call to next() advances the iterator to the position between the first and second item, and returns the first item; the second call to next() advances the iterator to the position between the second and third item, and so on.

Here is how to iterate over the elements in reverse order:

iter.toBack();
while (iter.hasPrevious()) {
iter.previous();
qDebug() << iter.key() << ": " << iter.value();
}

If you want to find all occurrences of a particular value use findNext() or findPrevious().

while (iter.findNext(widget)) {
qDebug() << "Found widget " << widget << " under key " << iter.key();
}

If you want to remove items as you iterate over the map, use remove(). If you want to modify the value of an item, use setValue().

Example:

while (iter.hasNext()) {
iter.next();
if (iter.key() == iter.value()) {
iter.remove();
}
}

The example removes all (key, value) pairs where the key and the value are the same.

See also
QMultiMapIterator

Constructor & Destructor Documentation

template<class Key , class Val , class C = qMapCompare<Key>>
QMutableMultiMapIterator< Key, Val, C >::QMutableMultiMapIterator ( QMultiMap< Key, Val, C > &  map)
inline

Constructs an iterator for traversing map. The iterator is set to the front of the map, before the first item.

See also
operator=()
template<class Key , class Val , class C = qMapCompare<Key>>
QMutableMultiMapIterator< Key, Val, C >::~QMutableMultiMapIterator ( )
inline

Destroys the iterator.

See also
operator=()

Method Documentation

template<class Key , class Val , class C = qMapCompare<Key>>
bool QMutableMultiMapIterator< Key, Val, C >::findNext ( const Val &  value)
inline

Searches for value starting from the current iterator position forward. Returns true if a (key, value) pair with value value is found, otherwise it returns false.

If value was found the iterator is positioned just after the matching item, otherwise the iterator is positioned at the end of the container.

See also
findPrevious()
template<class Key , class Val , class C = qMapCompare<Key>>
bool QMutableMultiMapIterator< Key, Val, C >::findPrevious ( const Val &  value)
inline

Searches for value starting from the current iterator position backward. Returns true if a (key, value) pair with value value is found, otherwise it returns false.

If value was found the iterator is positioned just before the matching item. Otherwise the iterator is positioned at the front of the container.

See also
findNext()
template<class Key , class Val , class C = qMapCompare<Key>>
bool QMutableMultiMapIterator< Key, Val, C >::hasNext ( ) const
inline

Returns true if there is at least one item ahead of the iterator. For example, the iterator is not at the end of the container. Otherwise this method returns false.

See also
hasPrevious(), next()
template<class Key , class Val , class C = qMapCompare<Key>>
bool QMutableMultiMapIterator< Key, Val, C >::hasPrevious ( ) const
inline

Returns true if there is at least one item behind the iterator. For example, the iterator is not at the front of the container. Otherwise this method returns false.

See also
hasNext(), previous()
template<class Key , class Val , class C = qMapCompare<Key>>
const Key & QMutableMultiMapIterator< Key, Val, C >::key ( ) const
inline

Returns the key of the last item that was jumped over using one of the traversal methods (next(), previous(), findNext(), findPrevious()).

After a call to next() or findNext(), key() is equivalent to peekPrevious().key(). After a call to previous() or findPrevious(), key() is equivalent to peekNext().key().

See also
value()
template<class Key , class Val , class C = qMapCompare<Key>>
Item QMutableMultiMapIterator< Key, Val, C >::next ( )
inline

Returns the next item and advances the iterator by one position. Use the key() method on the return value to obtain the item's key, and value() to obtain the value.

This method must not be called on an iterator located at the end of the container, it has undefined behavior.

See also
hasNext(), peekNext(), previous()
template<class Key , class Val , class C = qMapCompare<Key>>
QMutableMultiMapIterator & QMutableMultiMapIterator< Key, Val, C >::operator= ( QMultiMap< Key, Val, C > &  map)
inline

Resets the iterator to the front of the given map, before the first item.

See also
toFront(), toBack()
template<class Key , class Val , class C = qMapCompare<Key>>
Item QMutableMultiMapIterator< Key, Val, C >::peekNext ( ) const
inline

Returns the next item without moving the iterator. Call key() on the return value to obtain the item's key, and value() to obtain the value.

This method must not be called on an iterator located at the end of the container, it has undefined behavior.

See also
hasNext(), next(), peekPrevious()
template<class Key , class Val , class C = qMapCompare<Key>>
Item QMutableMultiMapIterator< Key, Val, C >::peekPrevious ( ) const
inline

Returns the previous item without moving the iterator. Call key() on the return value to obtain the item's key, and value() to obtain the value.

This method must not be called on an iterator located at the front of the container, it has undefined behavior.

See also
hasPrevious(), previous(), peekNext()
template<class Key , class Val , class C = qMapCompare<Key>>
Item QMutableMultiMapIterator< Key, Val, C >::previous ( )
inline

Returns the previous item and moves the iterator back by one position. Call key() on the return value to obtain the item's key, and value() to obtain the value.

This method must not be called on an iterator located at the front of the container, it has undefined behavior.

See also
hasPrevious(), peekPrevious(), next()
template<class Key , class Val , class C = qMapCompare<Key>>
void QMutableMultiMapIterator< Key, Val, C >::remove ( )
inline

Removes the last item that was jumped over using one of the traversal methods (next(), previous(), findNext(), findPrevious()).

See also
setValue()
template<class Key , class Val , class C = qMapCompare<Key>>
void QMutableMultiMapIterator< Key, Val, C >::setValue ( const Val &  value) const
inline

Replaces the value of the last item that was jumped over using one of the traversal methods with value.

The traversal methods are next(), previous(), findNext(), and findPrevious().

See also
key(), value(), remove()
template<class Key , class Val , class C = qMapCompare<Key>>
void QMutableMultiMapIterator< Key, Val, C >::toBack ( )
inline

Moves the iterator to the end of the container, after the last item.

See also
toFront(), previous()
template<class Key , class Val , class C = qMapCompare<Key>>
void QMutableMultiMapIterator< Key, Val, C >::toFront ( )
inline

Moves the iterator to the front of the container, before the first item.

See also
toBack(), next()
template<class Key , class Val , class C = qMapCompare<Key>>
Val & QMutableMultiMapIterator< Key, Val, C >::value ( )
inline

Returns a non-const reference to the value of the last item that was jumped over using one of the traversal methods.

template<class Key , class Val , class C = qMapCompare<Key>>
const Val & QMutableMultiMapIterator< Key, Val, C >::value ( ) const
inline

Returns the value of the last item that was jumped over using one of the traversal methods (next(), previous(), findNext(), findPrevious()).

After a call to next() or findNext(), value() is equivalent to peekPrevious().value(). After a call to previous() or findPrevious(), value() is equivalent to peekNext().value().

See also
key(), setValue()