C++进阶:STL算法14--交换

1. 简介

函数 作用 文档
swap(a,b) 交换存储在ab中的值。 swap()
swap_ranges(beg1,end1,beg2) 将[beg1,end1)内的元素[beg2,beg2+end1-beg1)元素值进行交换。 swap_ranges()
iter_swap(it_a,it_b) 交换两个ForwardIterator的值。 iter_swap()

2. 示例代码

  • swap
// swap algorithm example (C++98)
#include      // std::cout
#include     // std::swap
#include        // std::vector

int main () {

  int x=10, y=20;                              // x:10 y:20
  std::swap(x,y);                              // x:20 y:10

  std::vector foo (4,x), bar (6,y);       // foo:4x20 bar:6x10
  std::swap(foo,bar);                          // foo:6x10 bar:4x20

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

  return 0;
}
  • swap_ranges
// swap_ranges example
#include      // std::cout
#include     // std::swap_ranges
#include        // std::vector

int main () {
  std::vector foo (5,10);        // foo: 10 10 10 10 10
  std::vector bar (5,33);        // bar: 33 33 33 33 33

  std::swap_ranges(foo.begin()+1, foo.end()-1, bar.begin());

  // print out results of swap:
  std::cout << "foo contains:";
  for (std::vector::iterator it=foo.begin(); it!=foo.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

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

  return 0;
}
  • iter_swap
// iter_swap example
#include      // std::cout
#include     // std::iter_swap
#include        // std::vector

int main () {

  int myints[]={10,20,30,40,50 };              //   myints:  10  20  30  40  50
  std::vector 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::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

3. 练习

  1. 使用交换函数实现冒泡排序

你可能感兴趣的:(C++进阶:STL算法14--交换)