使用std :: swap而不是使用'='运算符赋值

时间:2014-12-21 00:41:31

标签: c++ variable-assignment swap

我正在查看与我正在进行的宠物项目相关的一些C ++源代码from a library,并遇到了一些我不理解的事情。在我期望指针取消引用然后赋值的地方,库作者使用函数末尾附近的std::swap()来写结果:

std::swap(*out, result);

我希望看到类似的东西:

*out = result;

请注意,resulttypedef size_tout是指向同一类型的指针。

对于"系统编程",我的背景是C和C#,但在C ++中并不多。这种类型的"赋值"?

是否有任何特殊原因

1 个答案:

答案 0 :(得分:10)

当值类型更有趣时,例如,std::vector<T>,将std::swap()临时构造的对象放到位而不是分配它可能更有意义:给定临时结果即将离开,避免任务,只是改变指针是有道理的。我认为没有任何理由可以使用std::size_t之类的基本类型做类似的事情。