我有一個的std ::地圖結構問題: 這段代碼正常工作: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將構造地圖的副本。您可以使用不同的副本來初始化迭代器,並在迭代器到達結束時進行處理。 –