在这个与copy-and-swap相关的问题中,答案中有一个swap()函数。
为什么不直接使用
friend void swap(dumb_array& first, dumb_array& second) // nothrow
{
// enable ADL (not necessary in our case, but good practice)
using std::swap;
// by swapping the members of two classes,
// the two classes are effectively swapped
swap(first.mSize, second.mSize);
swap(first.mArray, second.mArray);
}
为什么不直接使用
std::swap(first, second)
?
std::swap
确实会复制两边的内容。手动逐成员交换最多只会每次多复制一个成员,而在std::vector
上则完全不需要复制(向量数据)。 - Yakk - Adam Nevraumont