#include <iostream>
#include <list>
using namespace std;
int main( ) {
list< string> abcd;
list< string> :: iterator it;
cout << "testing empty list" << endl;
cout << "begin, pointer is " << & * abcd.begin ( ) << ", value is " << * abcd.begin ( ) << endl;
cout << "end, pointer is " << & * abcd.end ( ) << ", value is " << * abcd.end ( ) << endl;
for ( it = abcd.begin ( ) ; it ! = abcd.end ( ) ; it++ ) {
cout << "loop iteration, pointer is " << & * it << ", value is " << * it << endl;
}
cout << endl << endl;
abcd.push_back ( "val1" ) ;
abcd.push_back ( "val2" ) ;
abcd.push_back ( "val3" ) ;
cout << "testing three values in list" << endl;
cout << "begin, pointer is " << & * abcd.begin ( ) << ", value is " << * abcd.begin ( ) << endl;
cout << "end, pointer is " << & * abcd.end ( ) << ", value is " << * abcd.end ( ) << endl;
for ( it = abcd.begin ( ) ; it ! = abcd.end ( ) ; it++ ) {
cout << "loop iteration, pointer is " << & * it << ", value is " << * it << endl;
}
cout << endl;
cout << "comparing strings, looking for \" val2\" " << endl;
for ( it = abcd.begin ( ) ; it ! = abcd.end ( ) ; it++ ) {
cout << "comparing \" " << * it << "\" to \" val2\" " << endl;
cout << "it->compare returns " << it- > compare( "val2" ) << endl;
if ( it- > compare( "val2" ) == 0 ) {
cout << "match, breaking" << endl;
break ;
} else {
cout << "no match, continuing" << endl;
continue ;
}
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWxpc3Q8c3RyaW5nPiBhYmNkOwogICAgbGlzdDxzdHJpbmc+OjppdGVyYXRvciBpdDsKICAgIAogICAgY291dCA8PCAidGVzdGluZyBlbXB0eSBsaXN0IiA8PCBlbmRsOwogICAgY291dCA8PCAiYmVnaW4sIHBvaW50ZXIgaXMgIiA8PCAmKmFiY2QuYmVnaW4oKSA8PCAiLCB2YWx1ZSBpcyAiIDw8ICphYmNkLmJlZ2luKCkgPDwgZW5kbDsKICAgIGNvdXQgPDwgImVuZCwgcG9pbnRlciBpcyAiIDw8ICYqYWJjZC5lbmQoKSA8PCAiLCB2YWx1ZSBpcyAiIDw8ICphYmNkLmVuZCgpIDw8IGVuZGw7CiAgICBmb3IgKGl0ID0gYWJjZC5iZWdpbigpOyBpdCAhPSBhYmNkLmVuZCgpOyBpdCsrKSB7CiAgICAgICAgY291dCA8PCAibG9vcCBpdGVyYXRpb24sIHBvaW50ZXIgaXMgIiA8PCAmKml0IDw8ICIsIHZhbHVlIGlzICIgPDwgKml0IDw8IGVuZGw7CiAgICB9CiAgICAKICAgIGNvdXQgPDwgZW5kbCA8PCBlbmRsOwogICAgCiAgICBhYmNkLnB1c2hfYmFjaygidmFsMSIpOwogICAgYWJjZC5wdXNoX2JhY2soInZhbDIiKTsKICAgIGFiY2QucHVzaF9iYWNrKCJ2YWwzIik7CiAgICBjb3V0IDw8ICJ0ZXN0aW5nIHRocmVlIHZhbHVlcyBpbiBsaXN0IiA8PCBlbmRsOwogICAgY291dCA8PCAiYmVnaW4sIHBvaW50ZXIgaXMgIiA8PCAmKmFiY2QuYmVnaW4oKSA8PCAiLCB2YWx1ZSBpcyAiIDw8ICphYmNkLmJlZ2luKCkgPDwgZW5kbDsKICAgIGNvdXQgPDwgImVuZCwgcG9pbnRlciBpcyAiIDw8ICYqYWJjZC5lbmQoKSA8PCAiLCB2YWx1ZSBpcyAiIDw8ICphYmNkLmVuZCgpIDw8IGVuZGw7CiAgICBmb3IgKGl0ID0gYWJjZC5iZWdpbigpOyBpdCAhPSBhYmNkLmVuZCgpOyBpdCsrKSB7CiAgICAgICAgY291dCA8PCAibG9vcCBpdGVyYXRpb24sIHBvaW50ZXIgaXMgIiA8PCAmKml0IDw8ICIsIHZhbHVlIGlzICIgPDwgKml0IDw8IGVuZGw7CiAgICB9CiAgICAKICAgIGNvdXQgPDwgZW5kbDsKICAgIAogICAgY291dCA8PCAiY29tcGFyaW5nIHN0cmluZ3MsIGxvb2tpbmcgZm9yIFwidmFsMlwiIiA8PCBlbmRsOwogICAgZm9yIChpdCA9IGFiY2QuYmVnaW4oKTsgaXQgIT0gYWJjZC5lbmQoKTsgaXQrKykgewogICAgICAgIGNvdXQgPDwgImNvbXBhcmluZyBcIiIgPDwgKml0IDw8ICJcIiB0byBcInZhbDJcIiIgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJpdC0+Y29tcGFyZSByZXR1cm5zICIgPDwgaXQtPmNvbXBhcmUoInZhbDIiKSA8PCBlbmRsOwogICAgICAgIGlmIChpdC0+Y29tcGFyZSgidmFsMiIpID09IDApIHsKICAgICAgICAgICAgY291dCA8PCAibWF0Y2gsIGJyZWFraW5nIiA8PCBlbmRsOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb3V0IDw8ICJubyBtYXRjaCwgY29udGludWluZyIgPDwgZW5kbDsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgfQogICAgCglyZXR1cm4gMDsKfQ==
stdout
testing empty list
begin, pointer is 0xbfec69d4, value is
end, pointer is 0xbfec69d4, value is
testing three values in list
begin, pointer is 0x9c51028, value is val1
end, pointer is 0xbfec69d4, value is val3
loop iteration, pointer is 0x9c51028, value is val1
loop iteration, pointer is 0x9c51050, value is val2
loop iteration, pointer is 0x9c51078, value is val3
comparing strings, looking for "val2"
comparing "val1" to "val2"
it->compare returns -1
no match, continuing
comparing "val2" to "val2"
it->compare returns 0
match, breaking