Ce face std::string::swap
a.swap(b) face ca a să conțină ce avea b și invers. Pentru șirurile lungi nu se copiază textul, ci doar pointerii interni, deci operația este instantanee indiferent de lungime.
std::swap(a, b) face același lucru și este forma folosită de obicei în cod generic.
Parametri
| Parametru | Descriere |
|---|---|
alt |
Șirul cu care se face schimbul. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Schimbul a două nume
#include <iostream>
#include <string>
#include <utility>
int main() {
std::string castigator = "Mihai", locul_doi = "Ana";
std::cout << "Înainte: " << castigator << ", " << locul_doi << '\n';
castigator.swap(locul_doi);
std::cout << "După swap: " << castigator << ", " << locul_doi << '\n';
std::swap(castigator, locul_doi);
std::cout << "După std::swap: " << castigator << ", " << locul_doi << '\n';
}
Rezultat
Înainte: Mihai, Ana
După swap: Ana, Mihai
După std::swap: Mihai, Ana
Greșeli frecvente
- Schimbi valorile manual cu o variabilă temporară (
t = a; a = b; b = t;): face trei copii ale textului.swapnu copiază nimic.
Comenzi înrudite
std::string::assign: Înlocuiește tot conținutul șirului cu alt text, cu o bucată din alt text sau cu n caractere.std::string: Șir de caractere care își gestionează singur memoria; atenție, lucrează cu octeți, nu cu litere.