Re: "for_each + lambda" vs "ranged for"
On 1 Nov., 13:39, Daniel Kr?gler wrote:
The for-range loop is no proper replacement in all cases. Many
iterators in the library are created by factory functions or
constructors, e.g. consider
std::regex re = ...;
std::string s = ...;
std::for_each(std::sregex_iterator{s.begin(), s.end(), re},
std::sregex_iterator{}, [](const std::smatch&) { ...; }
);
Of course, one could easily write some wrapper/glue code to make the
for-range construct usable as well. Something like this:
for (auto match : find_matches(s,re)) {
:::
}
I was asking myself the same question: What good is for_each now that
we have a for-range loop. But then I saw Herb Sutter's "modern C++
talk". There is a point of using for_each. It expresses intent. The
for-range loop could contain a break. for_each iteratores over all
elements. That's what it says. And if there are already other
functions that iterate over a sequence to do something (std::find_if,
std::erase, etc) why not offer std::for_each as well?
Cheers!
SG
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]