temp
не требуется. Вам нужен компаратор с правильной подписью.
Например, когда разыменование personVec.begin()
приводит к Person*&
и person_name
имеет тип PersonName
, тогда вы можете иметь компаратор такой подписи:
bool compare(Person* const& a, PersonName const& b);
Это просто обычная функция, но другие вызовы с такой подписью тоже будут работать. Тогда вы можете использовать lower_bound
с person_name
напрямую:
auto it = lower_bound(personVec.begin(), personVec.end(), person_name, compare);
Ваш общий вопрос был о том, как улучшить производительность. Это невозможно предположить, увидев 4 строчки программы. Это следует выяснить, профилировав всю программу под большой нагрузкой данных и проанализировав результаты. Например, это может быть такая сортировка, что personVec
занимает намного больше времени, чем lower_bound
. Тогда использование unordered_set
вместо vector
может дать намного лучшие результаты, чем оптимизация функции поиска в vector
.