
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
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