find_by_order() в C++

Опубликовано: 19 Сентября, 2022

find_by_order() — это встроенная функция Ordered Set , которая представляет собой структуру данных на основе политик в C++. Структуры данных на основе политик не являются частью стандартной библиотеки шаблонов C++, но компилятор g++ поддерживает их.

Упорядоченный набор — это основанная на политике структура данных в g++, которая поддерживает уникальные элементы в отсортированном порядке. Он выполняет все операции, выполняемые Set в STL, со сложностью O(logN) .
Кроме того, следующие две операции также выполняются со сложностью O(logN) :

  • order_of_key (K): Number of items strictly smaller than K.
  • find_by_order(k): Kth element in a Set (counting from zero).

Функция find_by_order() принимает ключ, скажем, K , в качестве аргумента и возвращает итератор к K -му самому большому элементу в наборе.

Примеры:

Considering a Set S = {1, 5, 6, 17, 88}, 
s.find_by_order(0): Returns the 0th largest element, i.e. the minimum element, i.e. 1.
s.find_by_order(2): Returns the 2nd largest element, i.e. 6.

Note: If K >= N, where N is the size of the set, then the function returns either 0 or in some compilers, the iterator to the smallest element. 

Ниже представлена реализация функции find_by_order() на C++:

Временная сложность: O (n * log (n))
Вспомогательное пространство: O(n)