From 2007452901749801267
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f78e5,7eaa8faac8da5016
X-Google-Attributes: gidf78e5,public
From: Pete Becker <petebecker@acm.org>
Subject: Re: Defect Report: member == in container iterators considered harmful
Date: 1999/08/18
Message-ID: <37B9A195.B7090C3C@acm.org>#1/1
X-Deja-AN: 514086186
X-NNTP-Posting-Host: 24.128.201.83
Content-Transfer-Encoding: 7bit
Approved: stephen.clamage@sun.com (comp.std.c++)
References: <7p4nj8$n3u@enews4.newsguy.com> <37B98C2E.E3A1EA71@acm.org> <37B98D53.3B7@wanadoo.fr>
X-Accept-Language: en
X-UID: 0000000001
X-Status: $$$T
Content-Type: text/plain; charset=us-ascii
X-Complaints-To: abuse@mediaone.net
X-Trace: wbnws01.ne.mediaone.net 934912415 24.128.201.83 (Tue, 17 Aug 1999 13:53:35 EDT)
Organization: Road Runner
Mime-Version: 1.0
NNTP-Posting-Date: Tue, 17 Aug 1999 13:53:35 EDT
Newsgroups: comp.std.c++
Originator: clamage@taumet


Valentin Bonnard wrote:
> 
> Pete Becker wrote:
> 
> > Darin Adler wrote:
> 
> > >     bool check_equal(std::deque<int>::iterator i,
> > >         std::deque<int>::const_iterator ci)
> > >     {
> > >         return i == ci;
> > >     }
> > >
> >
> > Agreed. But the begin and end iterators that you get from a container
> > are of the same type, and they work just fine for the standard STL
> > idioms. Why do you need to do this? What coding practices does it
> > support?
> 
> Would you consider the following unatural or silly ?
> 
> for (const_iterator it = begin(); it!=end(); ++it)
>     foo (*it);
> 

Absolutely. <g> The standard STL idiom is to put the loop in a template
function. That way you don't have to worry about getting the type of the
iterator right. But the mistake in that particular loop is the decision
to use a const_iterator without regard to the actual constness of the
container. Write it this way:

for (Container::iterator it = cont.begin(); it != cont.end(); ++it)
	foo(*it);

-- 
Pete Becker
Dinkumware, Ltd.
http://www.dinkumware.com


[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://reality.sgi.com/austern_mti/std-c++/faq.html              ]




