Std::find_if против ручного цикла, какой из них лучше?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Std::find_if против ручного цикла, какой из них лучше?

Сообщение Anonymous »

Код: Выделить всё

void func1(const std::map& mp) {
auto it = std::find_if(mp.begin(), mp.end(), [](const auto& it){
return (it.second == 2);
});
std::cout first);
}

void func2(const std::map& mp) {
for (auto it = mp.begin(); it != mp.end(); ++it) {
if (it->second == 2) {
std::cout first);
break;
}
}
}

int main() {
std::map mp {{1, 2}, {3, 4}};
func1(mp);
func2(mp);
return 0;
}
Как видите, у меня есть две функции, выполняющие одну и ту же работу. Один использует std::find_if(), а другой — цикл for.
Я видел много кодов типа func1() после C++11, но, с моей точки зрения, std::find_if() использует лямбда-выражение, поэтому производительность может быть хуже.
Прав ли я в этом отношении? Когда мне следует использовать одно вместо другого?
Я пытался спросить у Google, но не нашел ничего, что могло бы меня убедить.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -is-better
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»