← Back to team overview

dolfin team mailing list archive

Re: RFC: remove (container.size() == 0) idiom

 

On 03/01/2012 04:51 PM, Andy Ray Terrel wrote:
On Thu, Mar 1, 2012 at 2:22 AM, Marco Morandini<morandini@xxxxxxxxxxxxxx>wrote:

There are some occurrences of

container.size() == 0

scattered throughout the code
(and fewer of container.size() != 0) .
Many of them are harmless, i.e. whenever container
is a vector. Some of them, however,
are for maps of sets (e.g. dolfin/adaptivity/**Extrapolation.cpp:149 ),
leading to completely unnecessary O(N) operations (racall that size() is
O(N) for a map or a list).


While true for a list, it is not a problem for maps or sets:

http://www.cplusplus.com/reference/stl/map/size/
http://www.cplusplus.com/reference/stl/set/size/

I stand corrected

While a silly implementation of a list will be O(n) most good
implementations keep its size around.

but please be aware that the "silly implementation" we are talking about is gcc's one:

http://gcc.gnu.org/onlinedocs/libstdc++/manual/containers.html#sequences.list.size

Marco


Follow ups

References