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