5 ms·
With C++14 this becomes sort(begin(vs), end(vs), [](auto const& l, auto const& r) { return l.size() < r.size(); }); Even
by bstamour 13y ago
With C++14 this becomes
sort(begin(vs), end(vs),
[](auto const& l, auto const& r) {
return l.size() < r.size();
});
Even simpler.
- dfrey 13y agoWhy are "begin" and "end" functions now instead of methods on the iterator? Do they consider it better because now you can pass around functions, but not methods?
- fauigerzigerk 13y agoBecause it works with arrays.
- bstamour 13y agoMore than that, actually. Because of argument dependent lookup, this will work for any container that has begin and end functions in the same namespace.
- dmunoz 13y agoWhat are the C++14 parts here? I haven't been paying much attention to the C++14 standards shaking out. dfrey already asked about why begin/end are functions now. I see auto being used inside the lambda. Was that not allowed in C++11? I got sucked into the "use auto everywhere" mantra, so I just imagined it was possible, but could easily see if it were not. That is probably the biggest decrease in size to the original code posted. I see return type inference. That is one thing I have heard about being new in C++14. To be honest, I would rather see the explicit return type there. Inference is always nice, though.
- bstamour 13y agoI omitted the return type (which is allowed for lambdas in C++11, and now arbitrary functions (with some conditions) in C++14) because it was a 1-liner. The bool return type can be deduced by the compiler automatically (or else it would fail to compile) and by the human by the operator < in use, the fact that it's being passed to sort, etc.
- ckarmann 13y ago> I see auto being used inside the lambda. Was that not allowed in C++11? It wasn't: http://stackoverflow.com/a/7709970/39622 http://stackoverflow.com/a/7709970/39622
- dmunoz 13y agoThanks for the reply. A comment under the accepted answer points to the wikipedia article on C++14, which has information on the new language and new standard library features [0]. I should have thought to check there first. [0] https://en.wikipedia.org/wiki/C%2B%2B14 https://en.wikipedia.org/wiki/C%2B%2B14