Exchanges the values of the elements between two types of objects

View versions (1)

Definition

The swap() algorithm is defined in the standard header <algorithm> and in the nonstandard backward-compatibility header <algo.h>.

Interface

#include <algorithm>
template <class Type>
   void swap(
      Type& left, 
      Type& right
   );

Parameters:

ParameterDescription
leftThe first object to have its elements exchanged
rightThe second object to have its elements exchanged

Description

Swap assigns the contents of left to right and the contents of right to left.

Return Value

None.

Complexity

Swap algorithm has a constant complexity. It performs one copy construction and two assignments.

Example 1
Problem

This program illustrates the functionality of swap algorithm.

Workings
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;
 
bool greaterthan(int value)
{  return value > 5;
}
 
int main()
{
  vector <int> vec1, vec2;
  vector <int>::iterator Iter1, Iter2, result;
  int i;
  for (i = 10; i<= 20; i++)
    vec1.push_back(i);
  int j;
  for(j = 10; j <= 15; j++)
    vec2.push_back(j);
  cout<<"Vector vec1 data is:\n";
  for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++)
    cout <<*Iter1<<" ";
  cout <<endl;
  cout <<"\nVector vec2 data is:\n";
  for (Iter2 = vec2.begin(); Iter2 != vec2.end(); Iter2++)
    cout<<*Iter2<<" ";
  cout <<endl;
  swap(vec1, vec2);
  cout <<"\nNow, vector vec1 data is:\n";
  for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++)
    cout <<*Iter1<<" ";
  cout <<endl;
  cout <<"\nThen, vector vec2 data is:\n";
  for (Iter2 = vec2.begin(); Iter2 != vec2.end(); Iter2++)
    cout <<*Iter2<<" ";
  cout <<endl;

  return 0;
}
Solution

Output:

Vector vec1 data is:
10 11 12 13 14 15 16 17 18 19 20

Vector vec2 data is:
10 11 12 13 14 15

Now, vector vec1 data is:
10 11 12 13 14 15

Then, vector vec2 data is:
10 11 12 13 14 15 16 17 18 19 20

See Also