Connecting Tech Pros Worldwide Help | Site Map

iterator pointing to invalid container

Parapura Rajkumar
Guest
 
Posts: n/a
#1: Jan 4 '07

int main(int argc, char* argv[])
{
std::map<int, int>::iterator footest;
{
std::map<int, intfoo;
foo[0] = 0;
footest = foo.begin();
}
return 0;
}

Is this undefined behavior? Please note that footest is going out of
scope before std::map. In theory an implementation could have a
iterator destructor that could still access the std::map ?

Thanks
Raj

Victor Bazarov
Guest
 
Posts: n/a
#2: Jan 4 '07

re: iterator pointing to invalid container


Parapura Rajkumar wrote:
Quote:
int main(int argc, char* argv[])
{
std::map<int, int>::iterator footest;
{
std::map<int, intfoo;
foo[0] = 0;
footest = foo.begin();
}
return 0;
}
>
Is this undefined behavior? Please note that footest is going out of
scope before std::map.
You mean, "after 'foo'", don't you?
Quote:
In theory an implementation could have a
iterator destructor that could still access the std::map ?
No. The iterator is allowed to be invalid, that does not affect
its destruction.

V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask


Roland Pibinger
Guest
 
Posts: n/a
#3: Jan 4 '07

re: iterator pointing to invalid container


On Thu, 4 Jan 2007 00:47:13 -0500, "Victor Bazarov" wrote:
Quote:
>Parapura Rajkumar wrote:
Quote:
>int main(int argc, char* argv[])
>{
> std::map<int, int>::iterator footest;
> {
> std::map<int, intfoo;
> foo[0] = 0;
> footest = foo.begin();
> }
> return 0;
>}
>>
>Is this undefined behavior? Please note that footest is going out of
>scope before std::map.
>
>You mean, "after 'foo'", don't you?
>
Quote:
>In theory an implementation could have a
>iterator destructor that could still access the std::map ?
>
>No. The iterator is allowed to be invalid, that does not affect
>its destruction.
Different kinds of invalid iterators are described here:
http://www.angelikalanger.com/Confer...tions-2002.pdf

Best wishes,
Roland Pibinger
Closed Thread