std :: swap()如何实现?

时间:2019-04-18 04:20:22

标签: c++ cpu hardware allocation

我只想知道std::swap()是如何实现的?

它是为临时变量分配RAM还是只是对CPU寄存器进行所有操作?

1 个答案:

答案 0 :(得分:0)

这完全取决于目标处理器的编译器。它在一台计算机上的编译方式可能与另一台计算机不同。一些(如果不是大多数的话)CPU具有XCHG指令,可以使用寄存器进行交换,而无需第三个临时寄存器。但是,由编译器决定进行相应的优化。我想即使编译器在发布模式(启用优化)中构建时,即使不使用,编译器仍将尝试使用寄存器进行简单的数字或布尔值交换。即使您可以强迫编译器在一个平台上使用寄存器,也没有理由在所有平台上都遵循相同的要求。除非您想检测架构并编写自己的程序集(要获得最佳兼容性和支持,这是一个整洁但很糟糕的主意,请相信我,大声笑),我建议您不要对此进行微优化,而只能让编译器来做