table of contents
        
      
      
    | std::queue::swap(3) | C++ Standard Libary | std::queue::swap(3) | 
NAME¶
std::queue::swap - std::queue::swap
Synopsis¶
void swap( queue& other ) noexcept(/* see below */); (since C++11)
  
   Exchanges the contents of the container adaptor with those of other.
    Effectively
  
   calls
  
   using std::swap;
  
   swap(c, other.c);
Parameters¶
other - container adaptor to exchange the contents with
Return value¶
(none)
Exceptions¶
 noexcept specification:
  
   noexcept(noexcept(swap(c, other.c))) (since C++11)
  
   (until C++17)
  
   In the expression above, the identifier swap is looked up in the same
  
   manner as the one used by the C++17 std::is_nothrow_swappable trait.
  
   noexcept specification: (since C++17)
  
   noexcept(std::is_nothrow_swappable_v<Container>)
Complexity¶
Same as underlying container (typically constant).
Notes¶
 Some implementations (e.g. libc++) provide the swap member
    function as an extension
  
   to pre-C++11 modes.
Example¶
// Run this code
  
   #include <iostream>
  
   #include <concepts>
  
   #include <queue>
  
   #include <string>
  
   #include <string_view>
  
   #include <vector>
  
   template<typename Adaptor>
  
   requires (std::ranges::input_range<typename Adaptor::container_type>)
  
   void print(std::string_view name, const Adaptor& adaptor)
  
   {
  
   struct Printer : Adaptor // to use protected Adaptor::Container c;
  
   {
  
   void print(std::string_view name) const
  
   {
  
   std::cout << name << " [" <<
    std::size(this->c) << "]: ";
  
   for (auto const& elem : this->c)
  
   std::cout << elem << ' ';
  
   std::cout << '\n';
  
   }
  
   };
  
   static_cast<Printer const&>(adaptor).print(name);
  
   }
  
   int main()
  
   {
  
   std::vector<std::string>
    v1{"1","2","3","4"},
  
  
    v2{"Ɐ","B","Ɔ","D","Ǝ"};
  
   std::queue s1(std::move(v1));
  
   std::queue s2(std::move(v2));
  
   print("s1", s1);
  
   print("s2", s2);
  
   s1.swap(s2);
  
   print("s1", s1);
  
   print("s2", s2);
  
   }
Output:¶
 s1 [4]: 4 3 2 1
  
   s2 [5]: Ǝ D Ɔ B Ɐ
  
   s1 [5]: Ǝ D Ɔ B Ɐ
  
   s2 [4]: 4 3 2 1
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   LWG 2456 C++11 the noexcept specification is ill-formed made to work
See also¶
 std::swap(std::queue) specializes the std::swap algorithm
  
   (C++11) (function template)
Category:¶
* conditionally noexcept
| 2024.06.10 | http://cppreference.com |