delorie.com/archives/browse.cgi | search |
From: | Niklas_Pson AT nosmam DOT hotmail DOT com (Niklas Pettersson) |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | removing objects from a container... (iterators) |
Date: | 17 Jul 2001 16:56:34 GMT |
Organization: | Lund Institute of Technology, Sweden |
Lines: | 38 |
Message-ID: | <90E1C8809NiklasPsonnospamhotm@130.235.20.4> |
NNTP-Posting-Host: | npedt97.univ.vxu.se |
User-Agent: | Xnews/03.04.11 |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
Hello! I have a program that has two nested iterators.. The inner iterator loop removes objects from the container.. This makes the outer iterator invalid.. Is there any nice way to solve this.. The "same" problem accures if only one iterator is used (altough that is easily solved).. Includes some code for the simple case #include <iostream> #include <list> int main() { typedef std::list<int *> TestListType; TestListType l; l.push_back(new int(10)); l.push_back(new int(20)); l.push_back(new int(30)); TestListType::iterator j; for (j = l.begin(); j != l.end(); j++) { int *int_obj = *j; std::cout << *int_obj << std::endl; if (*int_obj == 20) l.remove(int_obj); // THIS MAKES ITERATOR INVALID?? } return (0); } / Niklas
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |