Review Request: some krazy (and cppcheck) cleanups
Esben Mose Hansen
kde at mosehansen.dk
Sun Dec 6 14:34:57 GMT 2009
On Saturday 05 December 2009 23:53:55 Andrew Coles wrote:
> Whilst you're changing loops based on iterators, it's better to cache the
> value of foo.end() in a const variable before the start of the loop:
>
> {
> std::list<int>::iterator itr = numbers.begin();
> const std::list<int>::iterator itrEnd = numbers.end();
>
> for (; itr != itrEnd; ++itr) {
> ...
> }
> }
>
> (Note the extra braces - that way the scope of the iterator variables is
> still limited to just the for loop.)
>
You can cut down a lot on braces and stuff by doing this instead:
for (std::list<int>::iterator itr=number.begin(), itrEnd=numbers.end();
itr!=itrEnd;++itr) {
...
}
Note the comma. Just a trick I learned a lot time ago.
Also note that in the "trivial" cases, BOOST_FOREACH makes it somewhat more
elegant.
Qt's foreach unfortunately, insists on copying the container (I think),
making it next-to-unusable except for the implicitly-shared containers, and
breaking a lot of other useful stuff.
--
Kind regards, Esben
More information about the kde-core-devel
mailing list