swap可以用在数组上吗?该如何解决

swap可以用在数组上吗?
是否可以?swap可以用在关联容器上,为什么swap_ranges就不可以?

------解决方案--------------------
你说的数组是原生的数组还是 std::vector?

std::vector 可以, 原生的 int x[10]; 这种就不行.
swap 可以用于所有支持 = 操作的类型上, 原生数组显然不能使用 x = ... 的操作.

------解决方案--------------------
  swap不会改变容器内的值,改变的只是迭代器的值
  swap_range会改变容器内的值,也就是所谓的更易型算法。
  更易型算法是不能用在关联式容器上的。
  
  关于stl的任何疑问参考《C++标准程序库》《stl源码剖析》侯捷译。
------解决方案--------------------
   你可以简单的这么想,(下面伪代码,方便理解)
   class iterator
   {
      int* m_pData;
   }

   Array arr = {1, 2, 3}
   iterator it1; it1.m_pData = arr[0];
   iterator it2; it2,m_pData = arr[1]; 

   swap(it1, it2);


   调用swap()后 
   it1.m_pData = arr[1]; 
   it2.m_pData = arr[0];
   改变的只是迭代器,并没有改变容器arr内的值。