Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

iter_swap

公众成员函数  <algorithm>
template <class ForwardIterator1, class ForwardIterator2>
  void iter_swap (ForwardIterator1 a, ForwardIterator2 b);

交换两个迭代器指向的对象的值

交换a和b所指向的元素。
函数调用swap(无限定)来交换元素
这个函数模板的行为相当于:
template <class ForwardIterator1, class ForwardIterator2>
  void iter_swap (ForwardIterator1 a, ForwardIterator2 b)
{
  swap (*a, *b);
}

☲  参数


a,b
指向交换的对象的前向迭代器。Swap必须定义为交换迭代器所指向的类型的值。

☉  返回值



none

☣  示例



// iter_swap example
#include <iostream>     // std::cout
#include <algorithm>    // std::iter_swap
#include <vector>       // std::vector

int main () {

  int myints[]={10,20,30,40,50 };              //   myints:  10  20  30  40  50
  std::vector<int> myvector (4,99);            // myvector:  99  99  99  99

  std::iter_swap(myints,myvector.begin());     //   myints: [99] 20  30  40  50
                                               // myvector: [10] 99  99  99

  std::iter_swap(myints+3,myvector.begin()+2); //   myints:  99  20  30 [99] 50
                                               // myvector:  10  99 [40] 99

  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

输出:
myvector contains: 10 99 40 99

✥ 复杂度



常量,调用swap一次。

⇄ 数据竞争


两个迭代器所指向的对象都被修改。

☂ 异常安全性



如果swap调用抛出,则抛出。
注意,无效的参数会导致未定义的行为。

🍄  另请参阅



swap 交换两个对象的值(公众成员函数)
copy 复制范围的元素(公众成员函数)
replace 复制并比较替换范围内的值(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图