• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C++] - Zamiana wartości między zmiennymi.

Object Storage Arubacloud
0 głosów
5,468 wizyt
pytanie zadane 13 stycznia 2016 w C i C++ przez xCodezaur Bywalec (2,850 p.)

Witam,

Czy istnieje możliwość zamienienia zmiennej typu string, z inną zmienną typu string bez zmiennej pomocniczej ?

Dla przykładu, ze zmienną pomocniczą:

#include <iostream>

using namespace std;

int main()
{
  string a="zmiennych",b="zamiana";
  string pomocnicza;

  cout << "Przed: " << a << " " << b << endl;

  pomocnicza = a;
  a = b;
  b = pomocnicza;

  cout << "Po: " << a << " " << b << endl;

  return 0;
}

Chciałbym uzyskać taki efekt bez zmiennej pomocniczej. Wydaje mi się, że ze zmienną pomocniczą kod jest nieefektywny oraz przy większych zamianach trzeba będzie tworzyć więcej zmiennych.

Zamiana zmiennych typu int jest prostsza, ponieważ jest na to sposób:

a = a - b;
b = b + a;
a = b - a;

Z góry dziękuję za odpowiedź smiley

2 odpowiedzi

+2 głosów
odpowiedź 13 stycznia 2016 przez Radfler VIP (101,030 p.)
wybrane 13 stycznia 2016 przez xCodezaur
 
Najlepsza

Taki efekt możesz uzyskać przy wykorzystaniu funkcji std::swap:

#include <iostream>
#include <utility> // tu jest std::swap
 
using namespace std;
 
int main()
{
  string a="zmiennych",b="zamiana";
  // string pomocnicza; // To już nie jest potrzebne
 
  cout << "Przed: " << a << " " << b << endl;
 
  swap(a, b); // zamiana
 
  cout << "Po: " << a << " " << b << endl;
 
  return 0;
}:

 

komentarz 13 stycznia 2016 przez xCodezaur Bywalec (2,850 p.)
O to właśnie chodziło! Dzięki. Czy ta funkcja ma jakieś minusy ?
komentarz 13 stycznia 2016 przez Radfler VIP (101,030 p.)
edycja 17 maja 2016 przez Radfler
Nie ma żadnych minusów. Jedyna słuszna funkcja do zamiany dwóch obiektów.
komentarz 13 stycznia 2016 przez adrian17 Ekspert (345,160 p.)
Nie, nie ma minusów.
komentarz 13 stycznia 2016 przez xCodezaur Bywalec (2,850 p.)
Jeszcze raz dzięki :)
+1 głos
odpowiedź 13 stycznia 2016 przez niezalogowany

Zrób sobie funkcję która to będzie robiła(użyj szablonów), albo użyj funkcji std::swap tylko musisz dodać:

#include <algorithm>

 

komentarz 13 stycznia 2016 przez xCodezaur Bywalec (2,850 p.)
Jestem początkujący i jeszcze nie rozumiem tych szablonów. Dokładniejsze wyjaśnienie otrzymałem wyżej, ale i tak dzięki wielkie za poświęcenie czasu na odpowiedź :)

Podobne pytania

0 głosów
5 odpowiedzi 654 wizyt
pytanie zadane 19 listopada 2016 w C i C++ przez czujek22 Dyskutant (7,670 p.)
0 głosów
2 odpowiedzi 1,786 wizyt
pytanie zadane 16 maja 2016 w Java przez KMASBIn Nowicjusz (150 p.)

92,592 zapytań

141,441 odpowiedzi

319,700 komentarzy

61,975 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...