я знаю это std::find()
помогает найти позицию итератора для заданного значения. А также std::insert()
вставить данное значение в контейнер в известной позиции.
Однако есть ли какая-нибудь функция, которую я могу вызвать, которая возвращает позицию, в которую должно быть вставлено новое значение в соответствии с алфавитным порядком в стандартной библиотеке?
Например, если очередь A23, A34, B59, D49.
Если дополнение С50, то такая функция, как std::foo()
возвращает позицию между B59 и D49. Так что я могу тогда позвонить std::insert()
закончить работу?
Пара функций std::lowerbound
а также std::upperbound
даст вам итератор для точки вставки, который будет держать вектор в отсортированном порядке. Если элемент с таким же значением уже существует, lowerbound
даст точку вставки перед существующим значением, в то время как upperbound
даст точку позади. использование upperbound
если вы хотите стабильную сортировку.
Других решений пока нет …