我试图将字符串中的每个字符都转换为小写。而且这两个变换和foreach可以做到这一点:C++ 11 lambda:transform和for_each之间的区别
// use transform
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
// use for_each
for_each(str.begin(), str.end(), [](char &c){c = std::tolower(c);});
那么,有什么区别?哪一个在时间和空间效率上更好?
std :: transform没有做for_each所做的事情,“transofrm”和“lambda”也是不相关的东西,就像是问一个指针和一个参数有什么区别.. –
我怀疑'for_each(str .begin(),str.end(),[](char&c){std :: tolower(c);});'真的有用。应该可能是'for_each(str.begin(),str.end(),[](char&c){c = std :: tolower(c);});'。 – cpplearner
@cpplearner是的,你是对的。我误写了这一个。谢谢! –