发布网友 发布时间:2024-04-30 03:55
共1个回答
热心网友 时间:2024-05-07 04:37
C++标准库里有一个swap()函数模版,是通用目的的值交换语义的swap,如果竞赛允许使用标准库算法,那么就可以用它,而且因为它的实现太简单了,一般不会作为扣分或加分判断,不让用的话你自己写一份就行了。但是有些时候重载swap()是有意义的,因为std::swap只是通用目的的值交换,再遇到pImpl 模式封装对象这些东西的时候,效率就没有为这些对象/类写专门的交换函数(通常只对底层指针交换,而不是值交换)的效率高,而且swap有个很好的副作用,就是C++标准约定不能在swap中抛出异常,所以可以用copy-swap模式写异常安全代码,关于这个Scott Meyers的Effective C++一书专门有一章讲解怎么写和标准兼容的swap