Хотя ваше решение должно работать, его может быть сложно прочитать в зависимости от уровня навыков ваших коллег-программистов. Кроме того, он перемещает функциональность от сайта вызова. Что может сделать обслуживание немного сложнее.
Я не уверен, что ваша цель - вставить ключи в вектор или напечатать их для cout, поэтому я делаю оба. Вы можете попробовать что-то вроде этого:
map<int, int> m;
vector<int> v;
for(map<int,int>::iterator it = m.begin(); it != m.end(); ++it) {
v.push_back(it->first);
cout << it->first << "\n";
}
Или даже проще, если вы используете Boost:
map<int,int> m;
pair<int,int> me; // what a map<int, int> is made of
vector<int> v;
BOOST_FOREACH(me, m) {
v.push_back(me.first);
cout << me.first << "\n";
}
Лично мне нравится версия BOOST_FOREACH, потому что там меньше набирается текста, и она очень четко говорит о том, что она делает.