From: Rick X. <li...@xw...> - 2003-07-24 01:59:16
|
Hi, This may be OT but perhaps someone can tell me what's wrong with this code that exhibits odd behaviour from std::list, where a list is accessed through another list. Using: Mingw 2.0.0.3 (gcc 3.2) on win98 Command line: g++ -Wall minimal.cpp -o minimal.exe ------------------------------------------ #include <iostream> #include <list> using std::list; using std::cout; using std::endl; // the class we are inserting to class A { public: A () { it = alist.begin(); Insert (10); cout << "start size: " << alist.size() << endl; } void Insert (int i) { it = alist.insert (it, i); cout << "insert, size now: " << alist.size() << endl; } void PushBack (int i) { alist.push_back (i); cout << "pushback, size now: " << alist.size() << endl; } list<int> alist; list<int>::iterator it; }; // this class has a list of a class containing a list class B { public: B () { it = blist.begin(); } void Insert () { A a; it = blist.insert (it, a); } list<A> blist; list<A>::iterator it; }; int main() { // do lists B b; b.Insert (); b.it->Insert(100); b.it->PushBack(200); return 0; } ---------------------------------------- I get this output: >minimal insert, size now: 1 start size: 1 insert, size now: 1 pushback, size now: 2 >Exit code: 0 ---------------------------------- The initial Insert() in the constructor of A works fine. However, the subsequent Insert() does not increment the list size, while the PushBack() does. Any insight appreciated, Rick |