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

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