#include <iostream>
#include <list>
using namespace std;
void printList(list<int> list);
void printList(list< list<int> > list);
void printListPointers(list<int> list);
void printListPointers(list< list<int> > list);
class List {
public:
List(int, int);
list< list<int> > root;
};
List::List(int a, int b) {
list<int> l;
l.push_back(a);
l.push_back(b);
root.push_back(l);
cout << "constructor, values: root "; printList(root); cout << endl;
cout << "constructor, values: first node in root "; printList(*(root.begin())); cout << endl;
cout << "constructor, pointers: root "; printListPointers(root); cout << endl;
cout << "constructor, pointers: first node in root "; printListPointers(*(root.begin())); cout << endl;
}
int main() {
List foo = List(2, 3);
cout << "main, values: root "; printList(foo.root); cout << endl;
cout << "main, values: first node in root "; printList(*(foo.root.begin())); cout << endl;
cout << "main, pointers: root "; printListPointers(foo.root); cout << endl;
cout << "main, pointers: first node in root "; printListPointers(*(foo.root.begin())); cout << endl;
return 0;
}
void printList(list<int> l) {
cout << "{";
for (list<int>::iterator it = l.begin(); it != l.end(); it++) {
cout << *it << ", ";
}
cout << "}";
}
void printList(list< list<int> > l) {
cout << "{";
for (list< list<int> >::iterator it = l.begin(); it != l.end(); it++) {
printList(*it);
}
cout << "}";
}
void printListPointers(list<int> l) {
cout << "{";
for (list<int>::iterator it = l.begin(); it != l.end(); it++) {
cout << &*it << ", ";
}
cout << "}";
}
void printListPointers(list< list<int> > l) {
cout << "{";
for (list< list<int> >::iterator it = l.begin(); it != l.end(); it++) {
cout << &*it << ", ";
}
cout << "}";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHByaW50TGlzdChsaXN0PGludD4gbGlzdCk7CnZvaWQgcHJpbnRMaXN0KGxpc3Q8IGxpc3Q8aW50PiA+IGxpc3QpOwp2b2lkIHByaW50TGlzdFBvaW50ZXJzKGxpc3Q8aW50PiBsaXN0KTsKdm9pZCBwcmludExpc3RQb2ludGVycyhsaXN0PCBsaXN0PGludD4gPiBsaXN0KTsKCmNsYXNzIExpc3QgewogICAgcHVibGljOgogICAgICAgIExpc3QoaW50LCBpbnQpOwogICAgICAgIGxpc3Q8IGxpc3Q8aW50PiA+IHJvb3Q7Cn07CgpMaXN0OjpMaXN0KGludCBhLCBpbnQgYikgewogICAgbGlzdDxpbnQ+IGw7CiAgICBsLnB1c2hfYmFjayhhKTsKICAgIGwucHVzaF9iYWNrKGIpOwogICAgcm9vdC5wdXNoX2JhY2sobCk7CiAgICBjb3V0IDw8ICJjb25zdHJ1Y3RvciwgdmFsdWVzOiByb290ICI7IHByaW50TGlzdChyb290KTsgY291dCA8PCBlbmRsOwogICAgY291dCA8PCAiY29uc3RydWN0b3IsIHZhbHVlczogZmlyc3Qgbm9kZSBpbiByb290ICI7IHByaW50TGlzdCgqKHJvb3QuYmVnaW4oKSkpOyBjb3V0IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJjb25zdHJ1Y3RvciwgcG9pbnRlcnM6IHJvb3QgIjsgcHJpbnRMaXN0UG9pbnRlcnMocm9vdCk7IGNvdXQgPDwgZW5kbDsKICAgIGNvdXQgPDwgImNvbnN0cnVjdG9yLCBwb2ludGVyczogZmlyc3Qgbm9kZSBpbiByb290ICI7IHByaW50TGlzdFBvaW50ZXJzKCoocm9vdC5iZWdpbigpKSk7IGNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CglMaXN0IGZvbyA9IExpc3QoMiwgMyk7CiAgICBjb3V0IDw8ICJtYWluLCB2YWx1ZXM6IHJvb3QgIjsgcHJpbnRMaXN0KGZvby5yb290KTsgY291dCA8PCBlbmRsOwogICAgY291dCA8PCAibWFpbiwgdmFsdWVzOiBmaXJzdCBub2RlIGluIHJvb3QgIjsgcHJpbnRMaXN0KCooZm9vLnJvb3QuYmVnaW4oKSkpOyBjb3V0IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJtYWluLCBwb2ludGVyczogcm9vdCAiOyBwcmludExpc3RQb2ludGVycyhmb28ucm9vdCk7IGNvdXQgPDwgZW5kbDsKICAgIGNvdXQgPDwgIm1haW4sIHBvaW50ZXJzOiBmaXJzdCBub2RlIGluIHJvb3QgIjsgcHJpbnRMaXN0UG9pbnRlcnMoKihmb28ucm9vdC5iZWdpbigpKSk7IGNvdXQgPDwgZW5kbDsKICAgIAoJcmV0dXJuIDA7Cn0KCnZvaWQgcHJpbnRMaXN0KGxpc3Q8aW50PiBsKSB7CiAgICBjb3V0IDw8ICJ7IjsKICAgIGZvciAobGlzdDxpbnQ+OjppdGVyYXRvciBpdCA9IGwuYmVnaW4oKTsgaXQgIT0gbC5lbmQoKTsgaXQrKykgewogICAgICAgIGNvdXQgPDwgKml0IDw8ICIsICI7CiAgICB9CiAgICBjb3V0IDw8ICJ9IjsKfQoKdm9pZCBwcmludExpc3QobGlzdDwgbGlzdDxpbnQ+ID4gbCkgewogICAgY291dCA8PCAieyI7CiAgICBmb3IgKGxpc3Q8IGxpc3Q8aW50PiA+OjppdGVyYXRvciBpdCA9IGwuYmVnaW4oKTsgaXQgIT0gbC5lbmQoKTsgaXQrKykgewogICAgICAgIHByaW50TGlzdCgqaXQpOwogICAgfQogICAgY291dCA8PCAifSI7Cn0KCnZvaWQgcHJpbnRMaXN0UG9pbnRlcnMobGlzdDxpbnQ+IGwpIHsKICAgIGNvdXQgPDwgInsiOwogICAgZm9yIChsaXN0PGludD46Oml0ZXJhdG9yIGl0ID0gbC5iZWdpbigpOyBpdCAhPSBsLmVuZCgpOyBpdCsrKSB7CiAgICAgICAgY291dCA8PCAmKml0IDw8ICIsICI7CiAgICB9CiAgICBjb3V0IDw8ICJ9IjsKfQoKdm9pZCBwcmludExpc3RQb2ludGVycyhsaXN0PCBsaXN0PGludD4gPiBsKSB7CiAgICBjb3V0IDw8ICJ7IjsKICAgIGZvciAobGlzdDwgbGlzdDxpbnQ+ID46Oml0ZXJhdG9yIGl0ID0gbC5iZWdpbigpOyBpdCAhPSBsLmVuZCgpOyBpdCsrKSB7CiAgICAgICAgY291dCA8PCAmKml0IDw8ICIsICI7CiAgICB9CiAgICBjb3V0IDw8ICJ9IjsKfQ==
constructor, values: root {{2, 3, }}
constructor, values: first node in root {2, 3, }
constructor, pointers: root {0x96ff068, }
constructor, pointers: first node in root {0x96ff090, 0x96ff080, }
main, values: root {{2, 3, }}
main, values: first node in root {2, 3, }
main, pointers: root {0x96ff068, }
main, pointers: first node in root {0x96ff010, 0x96ff020, }