
On 29 August 2010 04:50, Mathias Gaunard <mathias.gaunard@ens-lyon.org> wrote:
for(int i=0; i<object.size(); i++)
I never understood why some people even write code like this. There are several problems with this: - using int, even though int has no direct relation with the size type of 'object'
Until C++0x and auto, it can be fairly painful to get size_type of the container, since you can't get it from the "object" variable itself. Personally, I go through the pain, but I can certainly understand why others may not. Library code, such as Boost, should do this for correctness.
- using indexes and size instead of iterators, which have an idiomatic way to be traversed
push_back(), for instance, may invalidate iterators with a vector or deque but will not invalidate indices.
- making the code rely on a particular data structure, instead of allowing it to work with any sequence type, allowing the code to be more easily changed.
Even std::sort doesn't work on *any* sequence type. There are usually other requirements (random access, contiguous space, O(1) insertion/removal, etc.) that limit the choice of data structures. -- Nevin Liber <mailto:nevin@eviloverlord.com> (847) 691-1404