Spec-Zone.ru › Qt 5.9

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API