Базовые алгоритмы Qt 4 (Qt 4s Generic Algorithms)

На нашем литературном портале можно бесплатно читать книгу Базовые алгоритмы Qt 4 (Qt 4s Generic Algorithms), Sшrvig Morten-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Базовые алгоритмы Qt 4 (Qt 4s Generic Algorithms)
Название: Базовые алгоритмы Qt 4 (Qt 4s Generic Algorithms)
Автор: Sшrvig Morten
Дата добавления: 16 январь 2020
Количество просмотров: 170
Читать онлайн

Базовые алгоритмы Qt 4 (Qt 4s Generic Algorithms) читать книгу онлайн

Базовые алгоритмы Qt 4 (Qt 4s Generic Algorithms) - читать бесплатно онлайн , автор Sшrvig Morten

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

Линейный и бинарный поиск

Алгоритмы qFind() и qBinaryFind() в качестве параметров получают итераторы диапазона и значение, а возвращают итератор на элемент, который соответствует данному значению, или "end" итератор, если не найдено ни одного элемента. Алгоритм бинарного поиска намного быстрее чем линейный алгоритм, но он может работать только с сортированными диапазонами.

Если значение встречается более одного раза, qFind() вернет итератор на первый элемент, тогда как qBinaryFind() на произвольный.

Для большей гибкости, Qt 4 предоставляет qLowerBound() и qUpperBound(). Как и qBinaryFind(), они работают с сортированным диапазоном. Если значение найдено, qLowerBound() вернет итератор на первый найденный элемент, а qUpperBound() вернет итератор, указывающий на следующий за последним элемент. Если значение не найдено, они вернут итератор на позицию, в которую данный элемент может быть вставлен.

Частый пример использования qLowerBound() и qUpperBound() это проход по всем вхождениям значения:

QStringList list;

QStringList::iterator i, j;

...

i = qLowerBound(list.begin(), list.end(), value);

j = qUpperBound(list.begin(), list.end(), value);

 

while (i != j) {

processItem(*i);

++i;

}

Перейти на страницу:
Комментариев (0)
название