Класс const_iterator
класс QMultiHash::const_iteratorКласс QMultiHash::const_iterator предоставляет итератор по типу STL для QMultiHash. Подробнее...
Открытые функции
| const_iterator(const iterator &other) | |
| const_iterator() | |
| const Key & | key() const |
| T & | value() const |
| bool | operator!=(const const_iterator &other) const |
| T & | operator*() const |
| const_iterator & | operator++() |
| const_iterator | operator++(int) |
| T * | operator->() const |
| bool | operator==(const const_iterator &other) const |
Подробное описание
QMultiHash имеет как итераторы по типу STL, так и итераторы по типу Java. Итераторы по типу STL более низкоуровневые и более сложные в использовании, но они немного быстрее, и для разработчиков, которые уже знакомы со STL, они имеют преимущество в плане привычности.
QMultiHash<Key, T>::const_iterator позволяет итерироваться по QMultiHash. Если вы хотите изменить QMultiHash во время итерации, необходимо использовать QMultiHash::iterator вместо этого. В общем случае рекомендуется использовать QMultiHash::const_iterator на не-константном QMultiHash, если вам не нужно изменять QMultiHash через итератор. Константные итераторы немного быстрее и могут улучшить читаемость кода.
Конструктор по умолчанию QMultiHash::const_iterator создаёт неинициализированный итератор. Необходимо инициализировать его с помощью функции QMultiHash, например, QMultiHash::constBegin(), QMultiHash::constEnd() или QMultiHash::find(), прежде чем начинать итерацию. Вот типичный цикл, который печатает все пары (ключ, значение), хранящиеся в хэше:
QHash<QString, int> hash;
hash.insert("January", 1);
hash.insert("February", 2);
...
hash.insert("December", 12);
QHash<QString, int>::const_iterator i;
for (i = hash.constBegin(); i != hash.constEnd(); ++i)
cout << i.key() << ": " << i.value() << Qt::endl; В отличие от QMap, который упорядочивает свои элементы по ключу, QMultiHash хранит свои элементы в произвольном порядке. Единственная гарантия состоит в том, что элементы с одинаковым ключом (потому что они были вставлены с помощью QMultiHash) будут появляться последовательно, начиная с последнего и заканчивая первым вставленным значением.
Несколько итераторов могут быть использованы для одного и того же хэша. Однако имейте в виду, что любые изменения, произведённые непосредственно в QHash (вставка и удаление элементов), могут привести к тому, что итераторы станут недействительными.
Вставка элементов в хэш или вызов методов, таких как QHash::reserve() или QHash::squeeze(), могут сделать все итераторы, указывающие в хэш, недействительными. Итераторы гарантируют, что они останутся действительными только до тех пор, пока QHash не вынужден увеличить/уменьшить свою внутреннюю хэш-таблицу. Использование любого итератора после того, как произошла перестройка, приведёт к неопределённому поведению.
Тем не менее, вы можете безопасно использовать итераторы для удаления записей из хэша, используя метод QHash::erase(). Эта функция может безопасно вызываться во время итерации и не повлияет на порядок элементов в хэше.
Если вам нужно сохранить итераторы в течение длительного времени, рекомендуется использовать QMap вместо QHash.
Предупреждение: Итераторы неявно совместно используемых контейнеров не работают точно так же, как итераторы STL. Следует избегать копирования контейнера, пока на нём активны итераторы. Для получения дополнительной информации см. проблему итераторов при неявном совместном использовании.
См. также QMultiHash::iterator.
Документация по функциям-членам
const_iterator::const_iterator(const iterator &other)
Создаёт копию other.
const_iterator::const_iterator()
Создаёт неинициализированный итератор.
Функции, такие как key(), value() и operator++(), не должны вызываться на неинициализированном итераторе. Используйте operator=() для присвоения значения перед его использованием.
См. также QMultiHash::constBegin() и QMultiHash::constEnd().
const Key &const_iterator::key() const
Возвращает ключ текущего элемента.
См. также value().
T &const_iterator::value() const
Возвращает значение текущего элемента.
См. также key() и operator*().
bool const_iterator::operator!=(const const_iterator &other) const
Возвращает true , если other указывает на другой элемент, чем этот итератор; в противном случае возвращает false.
См. также operator==().
T &const_iterator::operator*() const
Возвращает значение текущего элемента.
То же, что и value().
См. также key().
const_iterator &const_iterator::operator++()
Префиксный оператор ++ (++i) перемещает итератор к следующему элементу в хэше и возвращает итератор на новый текущий элемент.
Вызов этой функции для QMultiHash::end() приводит к неопределённым результатам.
const_iterator const_iterator::operator++(int)
Это перегруженная функция.
Постфиксный оператор ++ (i++) перемещает итератор к следующему элементу в хэше и возвращает итератор на предыдущий текущий элемент.
T *const_iterator::operator->() const
Возвращает указатель на значение текущего элемента.
См. также value().
bool const_iterator::operator==(const const_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-6.0/qmultihash-const-iterator.html