Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

C++ Array::swap() Function



The C++ std::array::swaps() function is used to exchange the contents of two array objects of the same type and size. It efficiently swaps the elements between the two arrays without requiring the explicit element by element copy. It ensures that both arrays retain their size and type integrity after the swap.

Syntax

Following is the syntax for std::array::swap() function.

void swap (array& x) noexcept(noexcept(swap(declval<value_type&>(),declval<value_type&>())));

Parameters

  • x − It indicates the array container of the same type.

Return Value

It does not return anything.

Exceptions

None

Time complexity

Linear i.e. O(n)

Example 1

In the following example, we are going to consider the basic usage of the swap() function.

#include <iostream>
#include <array>
int main() {
   std::array < int, 3 > x = {1,3,5};
   std::array < int, 3 > y = {2,4,6};
   x.swap(y);
   std::cout << "\n\nAfter swap:" << std::endl;
   std::cout << "x: ";
   for (int num: x) std::cout << num << " ";
   std::cout << "\ny: ";
   for (int num: y) std::cout << num << " ";
   return 0;
}

Output

Output of the above code is as follows −

After swap:
x: 2 4 6 
y: 1 3 5

Example 2

Consider the following example, where we are going to swap the array of different size and observing the output.

#include <iostream>
#include <array>
int main() {
   std::array < int, 2 > x = {1,2};
   std::array < int, 3 > y = {4,5,6};
   x.swap(y);
   return 0;
}

Output

If we run the above code it will generate the following output −

main.cpp: In function 'int main()':
main.cpp:7:12: error: cannot convert 'std::array<int, 3>' to 'std::array<int, 2>&'
    7 |     x.swap(y);
      |            ^
      |            |
      |            std::array<int, 3>

Example 3

Let's look at the following example, where we are going to swap the arrays of double values.

#include <iostream>
#include <array>
int main() {
   std::array < double, 2 > x = {1.2,3.4};
   std::array < double, 2 > y = {0.3,0.6};
   x.swap(y);
   std::cout << "x after swap: ";
   for (double num: x) std::cout << num << " ";
   std::cout << "\ny after swap: ";
   for (double num: y) std::cout << num << " ";
   return 0;
}

Output

Following is the output of the above code −

x after swap: 0.3 0.6 
y after swap: 1.2 3.4 
array.htm
Advertisements