4.5.2 交换数组

2013-10-07 15:00:22 · 作者: · 浏览: 65

4.5.2  交换数组

我们先来看一下boost::swap最简单的用法--交换两个数组的内容,它要求参与交换的两个数组必须具有相同的长度。下面的代码使用标准库算法fill_n将两个数组分别赋值为5和20,然后调用boost::swap()交换:

  1. int a1[10];                             //两个数组  
  2. int a2[10];  
  3.  
  4. std::fill_n(a1, 10, 5);                 //fill_n赋初始值  
  5. std::fill_n(a2, 10, 20);  
  6.  
  7. boost::swap(a1, a2);                        //交换两个数组的内容  

boost::swap交换数组内容的实现很简单,它使用了一个for循环,对数组中的每个元素调用单个元素版的boost::swap完成整个数组内容的交换。在上面的代码执行后a1中元素的值将为20,而a2中元素的值将为5。

如果企图用boost::swap交换两个长度不相同的数组,那么将无法通过编译:

  1. int a1[10], a2[12];                     //两个长度不相同的数组  
  2. boost::swap(a1, a2);                        //发生编译错误