Я не знаю такого контейнера.
std::sort
существует, в котором вы можете указать функцию сортировки, но зачастую даже более эффективно фактически вставлять элементы в правильное место напрямую.
Если вы всегда так делаете, единственная «проблема», которую вам нужно решить, - это добавить элемент в уже отсортированный список, что можно сделать в худшем случае за линейное время.
Обратите внимание, что std::vector<T>::insert()
принимает итератор в качестве параметра, чтобы указать, где выполнить вставку. Возможно, вы захотите написать findPosition()
методы, которые возвращают такой итератор. Затем написание sorted_insert()
метода тривиально и становится примерно таким:
std::vector<int>::iterator findPosition(int v);
void sorted_insert(std::vector<int>& vec, int v) { vec.insert(findPosition(v), v); }
void foo()
{
std::vector<int> vec;
sorted_insert(vec, 4);
}