Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::array<T,N>::swap

      From cppreference.com
      <cpp‎ |container‎ |array
       
       
       
       
      void swap( array& other)noexcept(/* see below */);
      (since C++11)
      (constexpr since C++20)

      Exchanges the contents of the container with those ofother. Does not cause iterators and references to associate with the other container.

      Contents

      [edit]Parameters

      other - container to exchange the contents with

      [edit]Return value

      (none)

      [edit]Exceptions

      noexcept specification:  
      noexcept(noexcept(swap(std::declval<T&>(),std::declval<T&>())))

      In the expression above, the identifierswap is looked up in the same manner as the one used by the C++17std::is_nothrow_swappable trait.

      (until C++17)
      noexcept specification:  
      (since C++17)
      For zero-sized arrays,
      noexcept specification:  
      noexcept
        

      [edit]Complexity

      Linear in size of the container.

      [edit]Example

      Run this code
      #include <array>#include <iostream> template<class Os,class V> Os& operator<<(Os& os,const V& v){    os<<'{';for(auto i: v)        os<<' '<< i;return os<<" } ";} int main(){std::array<int,3> a1{1,2,3}, a2{4,5,6}; auto it1= a1.begin();auto it2= a2.begin();int& ref1= a1[1];int& ref2= a2[1]; std::cout<< a1<< a2<<*it1<<' '<<*it2<<' '<< ref1<<' '<< ref2<<'\n';    a1.swap(a2);std::cout<< a1<< a2<<*it1<<' '<<*it2<<' '<< ref1<<' '<< ref2<<'\n'; // Note that after swap iterators and references stay associated with their original// array, e.g. `it1` still points to element a1[0], `ref1` still refers to a1[1].}

      Output:

      { 1 2 3 } { 4 5 6 } 1 4 2 5{ 4 5 6 } { 1 2 3 } 4 1 5 2

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 2456C++11thenoexcept specification is ill-formedmade to work

      [edit]See also

      specializes thestd::swap algorithm
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/array/swap&oldid=165503"

      [8]ページ先頭

      ©2009-2025 Movatter.jp