2015-10-17 69 views
0

我有一個std::deque<std::deque<Room*>> rooms我敢遍歷有:C++ - 雙端隊列:: push_front不工作

for(auto row : rooms) { 
    row.push_front(new Room()); 
} 

但出於某種原因,它只是覆蓋了new Room的第一個對象,而不是之前它插入new Room的。如果我在push_front調用之前和之後記錄row的大小,它會讀出例如1和2(好像它的行爲與預期的一樣),但如果我在循環之後記錄大小,則row是回到只有大小1.

沒有太多的事情正在進行,我可以提供更多的代碼,如果有必要。

我不知道在for循環中發生了什麼?我從來沒有看到第一個房間被毀壞或任何東西。

回答

3

使用auto& row而非auto row - 此刻的你正在做的每一行的臨時副本而不是修改原始。

+0

謝謝,這是做的伎倆 –