std::swap(std::basic_string)
From cppreference.com
< cpp | string | basic string
| ヘッダ <string> で定義 |
||
template< class CharT, class Traits, class Alloc > void swap( std::basic_string<CharT, Traits, Alloc>& lhs, |
(C++17まで) | |
| template< class CharT, class Traits, class Alloc > void swap( std::basic_string<CharT, Traits, Alloc>& lhs, |
(C++17以降) (C++20 以降 constexpr) |
|
std::swap アルゴリズムの std::basic_string に対する特殊化。 lhs と rhs の内容を交換します。
lhs.swap(rhs) と同等です。
目次 |
[編集] パラメータ
| lhs, rhs | - | 内容を交換する文字列 |
[編集] 戻り値
(なし)
[編集] 計算量
定数。
例外noexcept 指定:
noexcept(noexcept(lhs.swap(rhs))) |
(C++17以降) |
[編集] 例
このコードを実行
#include <iostream> #include <string> int main() { std::string a = "AAA"; std::string b = "BBBB"; std::cout << "Before swap:\n" "a = " << a << "\n" "b = " << b << "\n\n"; std::swap(a, b); std::cout << "After swap:\n" "a = " << a << "\n" "b = " << b << '\n'; }
出力
Before swap: a = AAA b = BBBB After swap: a = BBBB b = AAA
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2064 | C++11 | 非メンバ `swap` が `noexcept` で、メンバ `swap` と一貫性がなかった | noexcept 削除 |
[編集] 関連項目
| 内容を交換する (public メンバ関数) |