🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #3859

Re: C++ iterators

#3859
From: Bert Peers
Date: Sat, 18 Oct 2003 01:16
28 lines
2358 bytes
MaG wrote:

> "Gunter Schelfhout" <nospam@please.com> schreef in bericht
>>for (pos = coll.begin(); pos < coll.end(); pos += 2) {
>>        //print
>>"The expression += 2 might result in undefined behavior if it moves the
>>iterator beyond the end() of the collection."
> 
> 1) eigenlijk hoor je geen bewerkingen uit te voeren op iterators, pos++ en
> pos-- mag, de rest is gevaarlijk. (vergelijk het met pointer
> bewerkingen)

Hm, dat valt nog wel mee hoor.  Zolang de iterator uit een collectie
komt die random access iterators terug geeft (bv vector), is += 2
geen enkel probleem en perfect legaal.

Maar je hebt wel gelijk dat er een risico is op wrap-around;
"officieel" is het probleem dat die += 2 achter de schermen
hetzelfde _moet_ doen als 2 keer "++"; maar "++" is enkel geldig
als de iterator _voor_ de operatie nog dereferencable was.
Dus als coll.size daar toevallig oneven is, is het niet "might"
maar "will" result in undefined behavior :)

> 2) de end memberfunktie wijst al 1 positie *na* het laatste item. Dus
> wanneer pos naar het laatste item wijst is
> pos < coll.end() nog steeds waar! En pos + 2 is dus  helemaal undefined!

Bert
Technical Details
Message-ID: <_v0kb.296729$lh.66578505@amsnews02.chello.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsgate.cistron.nl!amsnews01.chello.com!amsnews02.chello.com.POSTED!53ab2750!not-for-mail
References: <0eYjb.84164$jN3.4351093@phobos.telenet-ops.be> <h8Zjb.2414$Wu5.276859050@hebe.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,bfe50767efe7e7cd
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-10-17 18:16:44 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsgate.cistron.nl!amsnews01.chello.com!amsnews02.chello.com.POSTED!53ab2750!not-for-mail
From: Bert Peers <firstname@bpeers.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031007
X-Accept-Language: en-us, en, ja
MIME-Version: 1.0
Newsgroups: be.comp.programming
Subject: Re: C++ iterators
References: <0eYjb.84164$jN3.4351093@phobos.telenet-ops.be> <h8Zjb.2414$Wu5.276859050@hebe.telenet-ops.be>
In-Reply-To: <h8Zjb.2414$Wu5.276859050@hebe.telenet-ops.be>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 29
Message-ID: <_v0kb.296729$lh.66578505@amsnews02.chello.com>
Date: Sat, 18 Oct 2003 01:16:42 GMT
NNTP-Posting-Host: 195.162.216.25
X-Complaints-To: abuse@chello.be
X-Trace: amsnews02.chello.com 1066439802 195.162.216.25 (Sat, 18 Oct 2003 02:16:42 WEST)
NNTP-Posting-Date: Sat, 18 Oct 2003 02:16:42 WEST
Organization: chello broadband