Учитывая пустой массив, мне нужно сделать два типа запросов
-
Вставка элемента в массив
-
Поиск индекса какого-либо элемента k (очевидно, массив нужно сортировать)
Это можно сделать, используя set container
set<int> st;
set.insert(t);
Это добавит мой элемент в O(log(n)).
И для второго запроса
set<int>::iterator it;
it = st.find(k);
idx = distance(st.begin(), it);
Это занимает время O(n). (O(n) [для distance() [+ O(log(n) [для set::find()]).
Есть ли способ сделать оба запроса в O(log(n)) с помощью предопределенных контейнеров С++?