//! [0]
        class Employee
        {
        public:
            Employee() {}
            Employee(const Employee &other);

            Employee &operator=(const Employee &other);

        private:
            QString myName;
            QDate myDateOfBirth;
        };
//! [0]


//! [1]
        QList<QString> list;
        list << "A" << "B" << "C" << "D";

        QListIterator<QString> i(list);
        while (i.hasNext())
            qDebug() << i.next();
//! [1]


//! [2]
        QListIterator<QString> i(list);
        i.toBack();
        while (i.hasPrevious())
            qDebug() << i.previous();
//! [2]


//! [3]
        QMutableListIterator<int> i(list);
        while (i.hasNext()) {
            if (i.next() % 2 != 0)
                i.remove();
        }
//! [3]


//! [4]
        QMutableListIterator<int> i(list);
        i.toBack();
        while (i.hasPrevious()) {
            if (i.previous() % 2 != 0)
                i.remove();
        }
//! [4]


//! [5]
        QMutableListIterator<int> i(list);
        while (i.hasNext()) {
            if (i.next() > 128)
                i.setValue(128);
        }
//! [5]


//! [6]
        QMutableListIterator<int> i(list);
        while (i.hasNext())
            i.next() *= 2;
//! [6]


//! [7]
        QMap<QString, QString> map;
        map.insert("Paris", "France");
        map.insert("Guatemala City", "Guatemala");
        map.insert("Mexico City", "Mexico");
        map.insert("Moscow", "Russia");
        ...

        QMutableMapIterator<QString, QString> i(map);
        while (i.hasNext()) {
            if (i.next().key().endsWith("City"))
                i.remove();
        }
//! [7]


//! [8]
        QMap<int, QWidget *> map;
        QHash<int, QWidget *> hash;

        QMapIterator<int, QWidget *> i(map);
        while (i.hasNext()) {
            i.next();
            hash.insert(i.key(), i.value());
        }
//! [8]


//! [9]
        QMutableMapIterator<int, QWidget *> i(map);
        while (i.findNext(widget))
            i.remove();
//! [9]


//! [10]
        QList<QString> list;
        list << "A" << "B" << "C" << "D";

        QList<QString>::iterator i;
        for (i = list.begin(); i != list.end(); ++i)
            *i = (*i).toLower();
//! [10]


//! [11]
        QList<QString> list;
        list << "A" << "B" << "C" << "D";

        QList<QString>::iterator i = list.end();
        while (i != list.begin()) {
            --i;
            *i = (*i).toLower();
        }
//! [11]


//! [12]
        QList<QString>::const_iterator i;
        for (i = list.constBegin(); i != list.constEnd(); ++i)
            qDebug() << *i;
//! [12]


//! [13]
        QMap<int, int> map;
        ...
        QMap<int, int>::const_iterator i;
        for (i = map.constBegin(); i != map.constEnd(); ++i)
            qDebug() << i.key() << ":" << i.value();
//! [13]


//! [14]
        // RIGHT
        const QList<int> sizes = splitter->sizes();
        QList<int>::const_iterator i;
        for (i = sizes.begin(); i != sizes.end(); ++i)
            ...

        // WRONG
        QList<int>::const_iterator i;
        for (i = splitter->sizes().begin();
                i != splitter->sizes().end(); ++i)
            ...
//! [14]


//! [15]
        QLinkedList<QString> list;
        ...
        QString str;
        foreach (str, list)
            qDebug() << str;
//! [15]


//! [16]
        QLinkedList<QString> list;
        ...
        QLinkedListIterator<QString> i(list);
        while (i.hasNext())
            qDebug() << i.next();
//! [16]


//! [17]
        QLinkedList<QString> list;
        ...
        foreach (QString str, list)
            qDebug() << str;
//! [17]


//! [18]
        QLinkedList<QString> list;
        ...
        foreach (QString str, list) {
            if (str.isEmpty())
                break;
            qDebug() << str;
        }
//! [18]


//! [19]
        QMap<QString, int> map;
        ...
        foreach (QString str, map.keys())
            qDebug() << str << ":" << map.value(str);
//! [19]


//! [20]
        QMultiMap<QString, int> map;
        ...
        foreach (QString str, map.uniqueKeys()) {
            foreach (int i, map.values(str))
                qDebug() << str << ":" << i;
        }
//! [20]


//! [21]
        forever {
            ...
        }
//! [21]


//! [22]
        CONFIG += no_keywords
//! [22]


//! [23]
        QString onlyLetters(const QString &in)
        {
            QString out;
            for (int j = 0; j < in.size(); ++j) {
                if (in[j].isLetter())
                    out += in[j];
            }
            return out;
        }
//! [23]


