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

C++ optional::swap() Function



The std::optional::swap() function in C++, is used to exchange the contents of the two optional objects including their initialized or empty states.

If both the objects are initialized, the contained values of the objects are swapped. If only one is initialized, the initialized state is transferred to the other.

Syntax

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

void swap( optional& other ) noexcept;

Parameters

  • other − It indicates the optional object to exchange the contents with.

Return value

This function does not return anything.

Example 1

Let's look at the following example, where we are going to perform the swap between two optional objects.

#include <iostream>
#include <optional>
int main() {
   std::optional < int > x1 = 11;
   std::optional < int > x2 = 22;
   std::cout << "Before swap: x1 = " << x1.value() << ", x2 = " << x2.value() << "\n";
   x1.swap(x2);
   std::cout << "After swap: x1 = " << x1.value() << ", x2 = " << x2.value() << "\n";
   return 0;
}

Output

Output of the above code is as follows −

Before swap: x1 = 11, x2 = 22
After swap: x1 = 22, x2 = 11

Example 2

Consider the following example, where we are going to perform the swapping when one optional is empty.

#include <iostream>
#include <optional>
int main() {
   std::optional < int > x1 = 112;
   std::optional < int > x2;
   std::cout << "Before swap: x1 = " << x1.value_or(-1) << ", x2 = " << x2.value_or(-1) << "\n";
   x1.swap(x2);
   std::cout << "After swap: x1 = " << x1.value_or(-1) << ", x2 = " << x2.value_or(-1) << "\n";
   return 0;
}

Output

Output of the above code is as follows −

Before swap: x1 = 112, x2 = -1
After swap: x1 = -1, x2 = 112
cpp_optional.htm
Advertisements