#include <map>
#include <string>
#include <iostream>
using namespace std;
typedef map<int, string> mymap_t;
void somefunction(mymap_t::const_iterator first, mymap_t::const_iterator last)
{
mymap_t subclone(first, last);
// use subclone -- it is a mymap_t now :)
for (mymap_t::iterator it = subclone.begin(); it!=subclone.end(); ++it)
{
it->second += '!';
std::cout << "first = " << it->first << ", second = " << it->second << std::endl;
}
}
int main()
{
mymap_t mymap;
mymap[1] = "One";
mymap[2] = "Two";
mymap[3] = "Three";
somefunction(mymap.begin(), mymap.end());
return 0;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBtYXA8aW50LCBzdHJpbmc+IG15bWFwX3Q7Cgp2b2lkIHNvbWVmdW5jdGlvbihteW1hcF90Ojpjb25zdF9pdGVyYXRvciBmaXJzdCwgbXltYXBfdDo6Y29uc3RfaXRlcmF0b3IgbGFzdCkKewoJbXltYXBfdCBzdWJjbG9uZShmaXJzdCwgbGFzdCk7CgoJLy8gdXNlIHN1YmNsb25lIC0tIGl0IGlzIGEgbXltYXBfdCBub3cgOikKCWZvciAobXltYXBfdDo6aXRlcmF0b3IgaXQgPSBzdWJjbG9uZS5iZWdpbigpOyBpdCE9c3ViY2xvbmUuZW5kKCk7ICsraXQpCgl7CgkJaXQtPnNlY29uZCArPSAnISc7CgkJc3RkOjpjb3V0IDw8ICJmaXJzdCA9ICIgPDwgaXQtPmZpcnN0IDw8ICIsIHNlY29uZCA9ICIgPDwgaXQtPnNlY29uZCA8PCBzdGQ6OmVuZGw7Cgl9Cn0gCgppbnQgbWFpbigpCnsKCW15bWFwX3QgbXltYXA7CglteW1hcFsxXSA9ICJPbmUiOwoJbXltYXBbMl0gPSAiVHdvIjsKCW15bWFwWzNdID0gIlRocmVlIjsKCgoJc29tZWZ1bmN0aW9uKG15bWFwLmJlZ2luKCksIG15bWFwLmVuZCgpKTsKCglyZXR1cm4gMDsKCn0K