4.5.2 交换数组
我们先来看一下boost::swap最简单的用法--交换两个数组的内容,它要求参与交换的两个数组必须具有相同的长度。下面的代码使用标准库算法fill_n将两个数组分别赋值为5和20,然后调用boost::swap()交换:
- int a1[10]; //两个数组
- int a2[10];
-
- std::fill_n(a1, 10, 5); //fill_n赋初始值
- std::fill_n(a2, 10, 20);
-
- boost::swap(a1, a2); //交换两个数组的内容
boost::swap交换数组内容的实现很简单,它使用了一个for循环,对数组中的每个元素调用单个元素版的boost::swap完成整个数组内容的交换。在上面的代码执行后a1中元素的值将为20,而a2中元素的值将为5。
如果企图用boost::swap交换两个长度不相同的数组,那么将无法通过编译:
- int a1[10], a2[12]; //两个长度不相同的数组
- boost::swap(a1, a2); //发生编译错误