Предположим, вы хотите реализовать шаблонную функцию, которая переносит в контейнер два итератора и целое число, которое описывает, «если элемент в контейнере находится в контейнере меньше, чем < integer> times, затем извлеките его из контейнера. «Такое объявление может быть:
template <class theIter>
theIter pop_um(theIter start, theIter end, int fewerThan);
Можно ли написать такую функцию за O (n) раз? Какие процедуры обычно используются для выполнения такой задачи?
Bucket / radix сортирует ваши данные (от начального до конечного итераторов), чтобы начать в линейное время. Затем просканируйте ваш новый отсортированный список за линейное время, отслеживая, когда элементы меняются, и делая его легким для поиска. Линейное время O (2n) = O (n). Занимает много памяти для сегментов, хотя в зависимости от того, как вы сортируете.
Других решений пока нет …