В STL есть контейнер, который имеет вставки O(1)
или O(logn)
и имеет возможность выполнять бинарный поиск (который требует произвольного доступа).Его имя std::deque
, хотя оно не имеет собственного порядка, поэтому вы должны сами указать порядок элементов.
// Fill a deque with elements
std::deque<int> deq{4, 2, 3, 1, 2, 3};
// Sort it to satisfy binary search precondition
std::sort(deq.begin(), deq.end());
// Do your binary search here