Мне нравится использовать std::algorithm
всякий раз, когда я могу использовать простые массивы. Теперь у меня есть 2 сомнения; Предположим, я хочу использовать std::lower_bound
, что произойдет, если значение, которое я предоставляю в качестве аргумента, не найдено?
int a[] = {1,2,3,4,5,6};
int* f = std::lower_bound(a,a+6,20);
Результат при печати * f равен 20.
То же самое происходит, если я использую std::find
.
int a[] = {1,2,3,4,5,6};
int* f = std::find(a,a+6,20);
Результат при печати * f равен 20.
- Всегда ли возвратное значение является исходным аргументом когда это не найдено?
- С точки зрения производительности
std::lower_bound
работает лучшеstd::find
, поскольку он реализует алгоритм бинарного поиска. Если массив большой, скажем, максимум 10 элементов, может ли std:: find работать лучше? За кулисами std:: lower_bound звонки std:: advance и std:: distance.. можно также сохранить эти вызовы?
Спасибо большое
AFG