我正在进行计算机游戏的蒙特卡罗模拟,基本上如下:
void simulate(Game game)
{
for (int i = 0; i < some_stuff)
{
Game game_copy = game;
// change copy
simulate(std::move(game_copy));
}
}
现在,Game
已经满了vector<>
个,复制成本非常高。
我发现上述版本在避免复制方面是最快版本,尽管尝试了:
Game&
,const Game&
和Game&&
std::move
有人可以向我解释一下吗?我不明白如何将参数类型从pass-by-value更改为pass-by-reference突然重新引入我设法避免的所有复制操作。这里发生了什么?是优化编译器吗?