2015-10-17 68 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

谢谢,这是做的伎俩 –