Саммерфилд Марк
Шрифт:
Алгоритм qFind выполняет поиск конкретного значения в контейнере. Он принимает «начальный» и «конечный» итераторы и возвращает итератор, ссылающийся на первый подходящий элемент, или «конечный» итератор, если нет подходящих элементов. В представленном ниже примере i устанавливается на list.begin + 1, a j устанавливается на list.end.
Алгоритм qBinaryFind выполняет поиск подобно алгоритму qFind, за исключением того, что он предполагает упорядоченность элементов в возрастающем порядке и использует двоичный поиск в отличие от линейного поиска в qFind.
Алгоритм qFill заполняет контейнер конкретным значением:
Как и другие алгоритмы, основанные на применении итераторов, qFill может выполняться для части контейнера, если соответствующим образом установить аргументы. В следующем фрагменте программного кода первые пять элементов вектора инициализируются значением 1009, а последние пять элементов — значением 2013:
Алгоритм qCopy копирует значения одного контейнера в другой.
Алгоритм qCopy может также использоваться для копирования элементов в рамках одного контейнера, если исходный диапазон и целевой диапазон не перекрываются. В следующем фрагменте программного кода мы заменяем последние два элемента списка первыми двумя элементами:
Алгоритм qSort сортирует элементы контейнера в порядке их возрастания.
По умолчанию qSort использует оператор < для сравнения элементов. Для сортировки элементов по убыванию передайте qGreater<T> в качестве третьего аргумента (здесь T — тип элемента контейнера):
Мы можем использовать третий параметр для определения пользовательского критерия сортировки. Например, ниже приводится функция сравнения «меньше, чем», которая выполняет сравнение строк QString без учета регистра:
Тогда вызов qSort будет таким:
Алгоритм qStableSort аналогичен qSort, за исключением того, что он гарантирует сохранение порядка следования одинаковых элементов. Этот алгоритм стоит применять в тех случаях, когда критерий сортировки учитывает только часть значения элемента и пользователь видит результат сортировки. Мы использовали qStableSort в главе 4 для реализации сортировки в приложении Электронная таблица.
Алгоритм qDeleteAll вызывает оператор delete для каждого указателя, хранимого в контейнере. Он имеет смысл только для контейнеров, в качестве элементов которых используются указатели. После вызова этого алгоритма элементы по-прежнему присутствуют в контейнере, и для их удаления используется функция clear. Например:
Алгоритм qSwap выполняет обмен значений двух переменных. Например: