Есть ли отсортированный контейнер в STL?
 Я имею в виду следующее: у меня есть std::vector<Foo>, где Foo - это пользовательский класс. У меня также есть какой-то компаратор, который будет сравнивать поля класса Foo.
Теперь, где-то в моем коде я делаю:
std::sort( myvec.begin(), myvec.end(), comparator );
который будет сортировать вектор в соответствии с правилами, которые я определил в компараторе.
 Теперь я хочу вставить элемент класса Foo в этот вектор. Если бы я мог, я хотел бы просто написать:
 mysortedvector.push_back( Foo() );
и то, что случилось бы, - то, что вектор поместит этот новый элемент согласно компаратору на его место.
Вместо этого прямо сейчас я должен написать:
myvec.push_back( Foo() );
std::sort( myvec.begin(), myvec.end(), comparator );
это просто пустая трата времени, поскольку вектор уже отсортирован, и все, что мне нужно, это правильно разместить новый элемент.
 Теперь, из-за характера моей программы, я не могу использовать std::map<> как у меня нет пар ключ/значение, просто простой вектор.
 Если я использую stl::list, мне снова нужно вызывать sort после каждой вставки.
