Namespaces
Variants

std:: swap (std::basic_string)

From cppreference.net
std::basic_string
ヘッダーで定義 <string>
template < class CharT, class Traits, class Alloc >

void swap ( std:: basic_string < CharT, Traits, Alloc > & lhs,

std:: basic_string < CharT, Traits, Alloc > & rhs ) ;
(C++17まで)
template < class CharT, class Traits, class Alloc >

void swap ( std:: basic_string < CharT, Traits, Alloc > & lhs,

std:: basic_string < CharT, Traits, Alloc > & rhs ) noexcept ( /* see below */ ) ;
(C++17から)
(C++20からconstexpr)

std::swap アルゴリズムを std::basic_string に対して特殊化します。 lhs rhs の内容を交換します。

lhs. swap ( rhs ) と同等です。

目次

翻訳のポイント: - 「Contents」を「目次」に翻訳 - HTMLタグ、属性、リンク先は一切変更せず保持 - C++関連の専門用語(Parameters、Return value、Complexity、Exceptions、Example、Defect reports、See also)は原文のまま保持 - 数字の順序付けもそのまま維持 - フォーマットと構造は完全に保持

パラメータ

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を削除

関連項目

内容を交換する
(公開メンバ関数)