我有一个std::deque<std::deque<Room*>> rooms
我正在迭代:
for(auto row : rooms) {
row.push_front(new Room());
}
但由于某种原因,它只是用new Room
覆盖第一个对象,而不是在它之前插入new Room
。如果我在row
调用之前和之后记录push_front
的大小,它会读出,例如,1然后是2(就好像它的行为符合预期),但是如果我记录大小在循环之后,row
返回到只有1的大小。
还没有其他事情发生,如果有必要,我可以提供更多代码。
for循环中是否有一些我不知道的事情?我从来没有看到第一个房间被毁坏或任何东西。
答案 0 :(得分:3)
使用auto& row
而不是auto row
- 在您制作每行的临时副本时,而不是修改原始行。