2013-05-15 2 views
0

Я знаю, что std::find() помогает найти позицию итератора заданного значения. И std::insert() вставьте заданное значение в контейнер в известном положении.Как вставить в отсортированном виде

Однако есть ли какая-либо функция, которую я могу вызвать, которая возвращает, в какую позицию следует ввести новое значение в соответствии с алфавитным порядком в стандартной библиотеке?

Например, если очередь A23, A34, B59, D49. Если добавление C50, то функция, такая как std::foo(), возвращает позицию между B59 и D49. Итак, я могу позвонить std::insert(), чтобы закончить работу?

ответ

0

Пара функций std::lowerbound и std::upperbound предоставит вам итератор точке ввода, которая сохранит вектор в отсортированном порядке. Если элемент с тем же значением уже существует, lowerbound даст точку ввода в начале существующего значения, в то время как upperbound даст точку позади. Используйте upperbound, если хотите стабильную сортировку.

Смежные вопросы