Класс key_iterator
(QMap::key_iterator)Класс QMap::key_iterator предоставляет итератор в стиле STL для константных ключей QMap и QMultiMap. Подробнее...
| Заголовок: | #include <key_iterator> |
| qmake: | QT += core |
| С момента: | Qt 5.6 |
Открытые функции
| key_iterator() = default | |
| key_iterator(const_iterator o) | |
| const_iterator | base() const |
| bool | operator!=(key_iterator other) const |
| const Key & | operator*() const |
| key_iterator & | operator++() |
| key_iterator | operator++(int) |
| key_iterator & | operator--() |
| key_iterator | operator--(int) |
| const Key * | operator->() const |
| bool | operator==(key_iterator other) const |
Подробное описание
Класс QMap::key_iterator предоставляет итератор в стиле STL для константных ключей QMap и QMultiMap.
QMap::key_iterator по сути является тем же, что и QMap::const_iterator, за исключением того, что operator*() и operator->() возвращают ключ вместо значения.
Для большинства случаев следует использовать QMap::iterator и QMap::const_iterator, вы можете легко получить доступ к ключу, вызвав QMap::iterator::key():
for (QMap<int, QString>::const_iterator it = map.cbegin(), end = map.cend(); it != end; ++it) {
cout << "The key: " << it.key() << endl
cout << "The value: " << it.value() << endl;
cout << "Also the value: " << (*it) << endl;
} Однако, для обеспечения совместимости между ключами QMap и алгоритмами в стиле STL нам нужен итератор, который обращается к ключу, а не к значению. С помощью QMap::key_iterator мы можем применить алгоритм к диапазону ключей без необходимости вызова QMap::keys(), что неэффективно, поскольку требует одного прохода по QMap и выделения памяти для создания временного QList.
// Inefficient, keys() is expensive QList<int> keys = map.keys(); int numPrimes = std::count_if(map.cbegin(), map.cend(), isPrimeNumber); qDeleteAll(map2.keys()); // Efficient, no memory allocation needed int numPrimes = std::count_if(map.keyBegin(), map.keyEnd(), isPrimeNumber); qDeleteAll(map2.keyBegin(), map2.keyEnd());
QMap::key_iterator является константным, поэтому изменить ключ нельзя.
Конструктор по умолчанию QMap::key_iterator создаёт неинициализированный итератор. Вы должны инициализировать его с помощью функции QMap, например, QMap::keyBegin() или QMap::keyEnd().
Предупреждение: Итераторы неявно-разделяемых контейнеров не работают точно так же, как итераторы STL. Следует избегать копирования контейнера, пока активны итераторы этого контейнера. Для получения дополнительной информации прочитайте проблему итераторов при неявном совместном использовании.
См. также QMap::const_iterator и QMap::iterator.
Документация по членам-функциям
[default] key_iterator::key_iterator()
Создаёт экземпляр key_iterator по умолчанию.
key_iterator::key_iterator(const_iterator o)
Создаёт экземпляр key_iterator по умолчанию.
const_iterator key_iterator::base() const
Возвращает базовый const_iterator, на котором основан этот key_iterator.
bool key_iterator::operator!=(key_iterator other) const
Возвращает true , если other указывает на другой элемент, чем этот итератор; в противном случае возвращает false.
См. также operator==().
const Key &key_iterator::operator*() const
Возвращает ключ текущего элемента.
key_iterator &key_iterator::operator++()
Префиксный оператор ++ (++i) перемещает итератор к следующему элементу в хэш-таблице и возвращает итератор на новый текущий элемент.
Вызов этой функции для QMap::keyEnd() приводит к неопределённым результатам.
См. также operator--().
key_iterator key_iterator::operator++(int)
Это перегруженная функция.
Постфиксный оператор ++ (i++) перемещает итератор к следующему элементу в хэш-таблице и возвращает итератор на предыдущий элемент.
key_iterator &key_iterator::operator--()
Префиксный оператор -- (--i) делает предыдущий элемент текущим и возвращает итератор, указывающий на новый текущий элемент.
Вызов этой функции для QMap::keyBegin() приводит к неопределённым результатам.
См. также operator++().
key_iterator key_iterator::operator--(int)
Это перегруженная функция.
Постфиксный оператор -- (i--) делает предыдущий элемент текущим и возвращает итератор, указывающий на предыдущий элемент.
const Key *key_iterator::operator->() const
Возвращает указатель на ключ текущего элемента.
bool key_iterator::operator==(key_iterator other) const
Возвращает true , если other указывает на тот же элемент, что и этот итератор; в противном случае возвращает false.
См. также operator!=().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qmap-key-iterator.html