最終更新日時(UTC):
が更新

履歴 編集

function template
<map>

std::swap (非メンバ関数)

namespace std {
  template <class Key, class T, class Compare, class Allocator>
  void swap(map<Key,T,Compare,Allocator>& x,
            map<Key,T,Compare,Allocator>& y);

  template <class Key, class T, class Compare, class Allocator>
  void swap(map<Key,T,Compare,Allocator>& x,
            map<Key,T,Compare,Allocator>& y)
    noexcept(noexcept(x.swap(y))); // C++17
}

概要

2つの map オブジェクトである x と 'y'が保持するコンテンツを交換する。サイズは異なる場合もある。 このメンバ関数の呼び出しの後、呼び出し前に 'x' にあった要素は y へ、y 内にあった要素は x へ移る。全てのイテレータ、参照、ポインタは有効なまま残る。

効果

x.swap(y);

戻り値

なし

計算量

定数時間

#include <iostream>
#include <map>

template <class Map>
void print(const char* name, const Map& m)
{
  std::cout << name << " : {";
  for (const auto& x : m) {
    std::cout << "[" << x.first << "," << x.second << "], ";
  }
  std::cout << "}" << std::endl;
}

int main()
{
  std::map<int, char> m1 = {
    {10, 'a'},
    {20, 'b'},
    {30, 'c'}
  };

  std::map<int, char> m2 = {
    {5, 'd'},
    {15, 'e'}
  };

  // m1とm2を入れ替える
  std::swap(m1, m2);

  print("m1", m1);
  print("m2", m2);
}

出力

m1 : {[5,d], [15,e], }
m2 : {[10,a], [20,b], [30,c], }

バージョン

言語

  • C++03

処理系

参照