У меня есть вопрос о структуре станд :: Карта: этот фрагмент кода работает правильно:C++ карта итераторов прыжковых элементов
map<string,int> mappa;
int main(int argc, char** argv) {
mappa["b"]=1;
mappa["a"]=2;
for(std::map<string,int>::iterator it=mappa.begin();it!=mappa.end();++it)
{
cout<<it->first<<"\n";
}
return 0;
}
выход:
a
b
, но если я делаю:
map<string,int> mappa;
std::map<string,int> getList(){
return mappa;
}
int main(int argc, char** argv) {
mappa["b"]=1;
mappa["a"]=2;
for(std::map<string,int>::iterator it=getList().begin();it!=getList().end();++it)
{
cout<<it->first<<"\n";
}
return 0;
}
мой выход только
b
Почему? Спасибо!
Я не понимаю. У меня есть две копии одной и той же карты ... begin() и end() не возвращают одинаковые значения в обеих копиях? – volperossa
@ user1973451 - В вашем вопросе ваша функция getList создает копию карты. Вы используете разные копии для инициализации итератора и разработки, когда он достигает конца. –