std::set
- отсортированное дерево. Он предоставляет методы begin
и end
, поэтому я могу получить минимальный и максимальный значения и lower_bound
и upper_bound
для двоичного поиска. Но что, если я хочу, чтобы итератор указывал на средний элемент (или один из них, если там есть четное количество элементов)?
Существует ли эффективный способ (O(log(size))
not O(size)
)?
{1} => 1
{1,2} => 1 or 2
{1,2,3} => 2
{1,2,3,4} => 2 or 3 (but in the same direction from middle as for {1,2})
{1,312,10000,14000,152333} => 10000