#include <iostream>
#include <map>
struct Foo
{
Foo() : someValue(5) {};
int someValue;
};
std::map<int,Foo*> function_that_returns_the_map()
{
std::map<int,Foo*> myMap;
{
int v = 0;
Foo *b = new Foo();
std::cout << (*b).someValue << std::endl; // PRINTING FOO FIRST
myMap.insert(std::pair<int,Foo*>(v,b));
}
// PRINTING FOO AGAIN
std::map<int, Foo*>::iterator it = myMap.begin();
for(it; it != myMap.end(); ++it)
{
std::cout << it->second->someValue << "\n";
}
return myMap;
}
int main()
{
std::map<int, Foo*> myMap;
myMap = function_that_returns_the_map();
//PRINTING FOO AGAIN.
std::map<int, Foo*>::iterator it = myMap.begin();
for (it; it!=myMap.end(); ++it)
std::cout << it->second->someValue << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKc3RydWN0IEZvbwp7CiAgIEZvbygpIDogc29tZVZhbHVlKDUpIHt9OwogICBpbnQgc29tZVZhbHVlOwp9OwoKc3RkOjptYXA8aW50LEZvbyo+IGZ1bmN0aW9uX3RoYXRfcmV0dXJuc190aGVfbWFwKCkKewogICBzdGQ6Om1hcDxpbnQsRm9vKj4gbXlNYXA7CiAgIHsKICAgICAgaW50IHYgPSAwOyAKICAgICAgRm9vICpiID0gbmV3IEZvbygpOwogICAgICBzdGQ6OmNvdXQgPDwgKCpiKS5zb21lVmFsdWUgPDwgc3RkOjplbmRsOyAvLyBQUklOVElORyBGT08gRklSU1QKICAgICAgbXlNYXAuaW5zZXJ0KHN0ZDo6cGFpcjxpbnQsRm9vKj4odixiKSk7CiAgIH0KCiAgIC8vIFBSSU5USU5HIEZPTyBBR0FJTgogICBzdGQ6Om1hcDxpbnQsIEZvbyo+OjppdGVyYXRvciBpdCA9IG15TWFwLmJlZ2luKCk7CiAgIGZvcihpdDsgaXQgIT0gbXlNYXAuZW5kKCk7ICsraXQpCiAgIHsgCiAgICAgIHN0ZDo6Y291dCA8PCBpdC0+c2Vjb25kLT5zb21lVmFsdWUgPDwgIlxuIjsKICAgfQogICByZXR1cm4gbXlNYXA7Cn0KICAKaW50IG1haW4oKQp7CiAgIHN0ZDo6bWFwPGludCwgRm9vKj4gbXlNYXA7CiAgIG15TWFwID0gZnVuY3Rpb25fdGhhdF9yZXR1cm5zX3RoZV9tYXAoKTsKCiAgIC8vUFJJTlRJTkcgRk9PIEFHQUlOLgoKICAgc3RkOjptYXA8aW50LCBGb28qPjo6aXRlcmF0b3IgaXQgPSBteU1hcC5iZWdpbigpOwogICBmb3IgKGl0OyBpdCE9bXlNYXAuZW5kKCk7ICsraXQpCiAgIHN0ZDo6Y291dCA8PCBpdC0+c2Vjb25kLT5zb21lVmFsdWUgPDwgc3RkOjplbmRsOwogICByZXR1cm4gMDsKfQ==