Spec-Zone.ru › D

std.algorithm

Этот пакет реализует универсальные алгоритмы, ориентированные на обработку последовательностей. Последовательности, обрабатываемые этими функциями, определяют интерфейсы на основе диапазонов. См. также справочник по диапазонам и учебник по диапазонам.



Алгоритмы разделены на следующие подмодули:

Подмодуль Функции
Поиск all any balancedParens boyerMooreFinder canFind commonPrefix count countUntil endsWith find findAdjacent findAmong findSkip findSplit findSplitAfter findSplitBefore minCount maxCount minElement maxElement minIndex maxIndex minPos maxPos skipOver startsWith until
Сравнение among castSwitch clamp cmp either equal isPermutation isSameLength levenshteinDistance levenshteinDistanceAndPath max min mismatch predSwitch
Итерация cache cacheBidirectional chunkBy cumulativeFold each filter filterBidirectional fold group joiner map mean permutations reduce splitter substitute sum uniq
Сортировка completeSort isPartitioned isSorted isStrictlyMonotonic ordered strictlyOrdered makeIndex merge multiSort nextEvenPermutation nextPermutation partialSort partition partition3 schwartzSort sort topN topNCopy topNIndex
Операции над множествами
(setops)
cartesianProduct largestPartialIntersection largestPartialIntersectionWeighted multiwayMerge multiwayUnion setDifference setIntersection setSymmetricDifference
Изменение bringToFront copy fill initializeAll move moveAll moveSome moveEmplace moveEmplaceAll moveEmplaceSome remove reverse strip stripLeft stripRight swap swapRanges uninitializedFill


Многие функции в этом пакете параметризованы с помощью предиката. Предикат может быть любым подходящим вызываемым типом (функция, делегат, функтор или лямбда-выражение), или строкой на этапе компиляции. Строка может состоять из любого допустимого выражения D, которое использует символ a (для унарных функций) или символы a и b (для бинарных функций). Эти имена НЕ будут конфликтовать с другими одноимёнными символами в коде пользователя, потому что они оцениваются в другом контексте. По умолчанию для всех бинарных предикатных сравнений используется "a == b" для неупорядоченных операций и "a < b" для упорядоченных операций.

Пример
int[] a = ...;
static bool greater(int a, int b)
{
    return a > b;
}
sort!greater(a);           // predicate as alias
sort!((a, b) => a > b)(a); // predicate as a lambda.
sort!"a > b"(a);           // predicate as string
                           // (no ambiguity with array name)
sort(a);                   // no predicate, "a < b" is implicit
Лицензия:
Лицензия Boost 1.0.
Авторы:
Andrei Alexandrescu
Исходный код
std/algorithm/package.d

© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_algorithm.html

Spec-Zone.ru

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