c ++ - deque :: push_front无效

时间:2015-10-17 22:59:37

标签: c++ deque

我有一个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循环中是否有一些我不知道的事情?我从来没有看到第一个房间被毁坏或任何东西。

1 个答案:

答案 0 :(得分:3)

使用auto& row而不是auto row - 在您制作每行的临时副本时,而不是修改原始行。