void swap(multimap<Key,T, Compare,Allocator>& st);
void swap(multimap& x)
noexcept(allocator_traits<Allocator>::is_always_equal::value
&& noexcept(swap(declval<Compare&>(),declval<Compare&>()))); // C++17
概要
コンテナ内のコンテンツを、同じ型の要素を保持する他の multimap
オブジェクトである st
内のコンテンツと交換する。サイズは異なる場合もある。
このメンバ関数の呼び出しの後、呼び出し前にコンテナ内にあった要素は st
へ、st
内にあった要素は *this
へ移る。全てのイテレータ、参照、ポインタは有効なまま残る。
パラメータ
st
*this
とコンテンツを交換する、同じ型のmultimap
コンテナ。
計算量
定数時間
例
#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::multimap<int, char> m1;
m1.insert(std::make_pair(10, 'a'));
m1.insert(std::make_pair(20, 'b'));
m1.insert(std::make_pair(30, 'c'));
std::multimap<int, char> m2;
m2.insert(std::make_pair(5, 'd'));
m2.insert(std::make_pair(15, 'e'));
// m1とm2を入れ替える
m1.swap(m2);
print("m1", m1);
print("m2", m2);
}
出力
m1 : {[5,d], [15,e], }
m2 : {[10,a], [20,b], [30,c], }
バージョン
言語
- C++03
処理系
- Clang: ??
- GCC: 4.7.2 ✅
- ICC: ??
- Visual C++: 2012 ✅
参照
- N4258 Cleaning-up noexcept in the Library, Rev 3
noexcept
追加の経緯となる提案文書