C++ Std Swap

C Std Swap



“Swapping ialah perbuatan menukar dua atau lebih perkara. Data antara dua pembolehubah dalam pengaturcaraan boleh ditukar. Pertukaran perkara antara dua orang adalah mungkin dalam kehidupan sebenar. Mana-mana nilai dua objek boleh ditukar menggunakan fungsi perpustakaan standard swap() dalam C++. Ia telah diletakkan di bawah pengepala 'utiliti' dalam C11. Fungsi swap() dalam C++ mempunyai kerumitan N untuk tatasusunan kerana setiap elemen mesti ditukar secara individu, manakala kesukaran fungsi untuk pemalar adalah malar. Fungsi swap() memberikan amaran atau ralat jika mana-mana elemen pembolehubah gagal. Lihat tandatangan fungsi untuk std::swap() di bawah:

Sintaks:

templat < kelas T > batal bertukar-tukar ( T & pembolehubah_1 , T & pembolehubah_2 ) ;

Kedua-dua nilai pembolehubah pertama dan pembolehubah kedua, yang kedua-duanya menyimpan nilai, akan ditukar. Fungsi ini hanya menukar nilai pembolehubah; ia tidak mempunyai keluaran.”







Mengerjakan Fungsi swap() dalam C++

Fungsi swap dilaksanakan dalam C++ menggunakan tiga baris berikut.



templat batal bertukar-tukar ( T & i , T & j ) {
T suhu = std :: bergerak ( i ) ;
i = std :: bergerak ( j ) ;
j = std :: bergerak ( temp ) ;
}

Pernyataan “T temp = std::move(i)”; membuat salinan elemen 'i' dan menduplikasinya. Di sini, 'i = std::move(j)'; membuang item asal 'i' dan menyimpan salinan 'i' 'j' sebagai ganti 'j' asal. Formula 'j = std:: move(temp)'; simpan 'i' dengan klon temp, dan alih keluar kandungan temp yang sama. Juga, Padamkan pembolehubah temp selepas pelaksanaan fungsi swap() selesai.



Contoh 1: Program Menggunakan std::move Kaedah untuk Swap

Seperti yang ditunjukkan di bawah, kita boleh menukar dua objek menggunakan ciri C++11 std::move.





#include

#include



templat
batal bertukar-tukar ( T & a , T & b )
{
T suhu = std :: bergerak ( a ) ;
a = std :: bergerak ( b ) ;
b = std :: bergerak ( temp ) ;
}
int utama ( )
{
std :: vektor senarai = { 10 , 12 , 13 , lima belas , 16 , 17 } ;
int i = 3 , j = 5 ;
bertukar-tukar ( senarai [ i ] , senarai [ j ] ) ;
untuk ( int i : senarai ) {
std :: cout << i << '' ;
}
kembali 0 ; }

Kami mempunyai pengisytiharan templat yang mempunyai objek 'T'. Selepas itu, kami telah menubuhkan fungsi sebagai 'swap'. Fungsi ini mengambil dua parameter &a dan &b, jenis 'T'. Hasil daripada hujah T& a, T& b merujuk atau menyimpan alamat pembolehubah yang dilalui dan memohon terus kepada mereka tanpa kembali, fungsi swap(T& a, T& b) dipanggil panggilan melalui rujukan.



Di dalam pertukaran kosong, kami telah menggunakan algoritma pertukaran dengan menggunakan kaedah std::move. Kemudian, kami membina program utama. Di sini, kami telah mengisytiharkan 'senarai' pembolehubah dan memulakannya dengan senarai nilai angka. Kami telah menetapkan nilai untuk 'i' dan 'j' untuk pertukaran. Nilai angka yang terletak pada indeks kedua telah digantikan dengan nilai angka pada indeks kelima. Kemudian, kami memanggil fungsi swap dan lulus indeks 'i' dan 'j' kepadanya untuk bertukar. Gelung for digunakan untuk mencetak senarai bertukar.

Output memaparkan senarai yang diubah suai. Anda boleh melihat senarai baharu yang dihasilkan menukar nilai mengikut indeks yang ditentukan.

Contoh 2: Program Menggunakan Kaedah std::swap untuk Tukar

Menggunakan mekanisme std::swap yang terdapat dalam pengepala utiliti (dalam C++11) ialah pembetulan biasa. Nilai dua objek ditukar untuk menjadikannya berfungsi.

#include

#include

#include



int utama ( )
{
std :: vektorarr = { 3 , 6 , 9 , lima belas , 13 } ;
int i = 3 , j = 4 ;

std :: bertukar-tukar ( arr [ i ] , arr [ j ] ) ;

untuk ( int i : arr ) {
std :: cout << i << '' ;
}

kembali 0 ;
}

Dengan mengimport fail pengepala , kami boleh mengakses fungsi swap dalam program kami. Di sini, kami telah memasukkan fail pengepala dengan dua perpustakaan yang lebih penting. Kemudian, kami telah menubuhkan kaedah utama int. Di dalam program utama, kami telah mengisytiharkan vektor dengan mencipta pembolehubah 'arr.' Pembolehubah 'arr' dimulakan dengan lima elemen integer. Kedudukan indeks diberikan kepada 'i' dan 'j' untuk pertukaran. Pembolehubah 'i' dan 'j' kemudiannya dihantar ke kaedah std::swap untuk pertukaran nilai indeks yang ditentukan. Dengan gelung for, kami telah mencetak tatasusunan yang ditukar.

Senarai yang diperoleh selepas operasi pertukaran dengan menggunakan kaedah std::swap dipaparkan seperti berikut:

Contoh 3: Program Menggunakan Kaedah std::iter_swap untuk Tukar

Penggunaan algoritma std::iter_swap, yang disenaraikan dalam pengepala untuk algoritma, ialah pilihan tambahan. Cara ia beroperasi adalah dengan menukar nilai objek yang ditunjukkan oleh iterator yang disediakan.

#include

#include

#include

#include



int utama ( )
{
std :: vektorvec = { 64 , 61 , 62 , 63 , 60 } ;
int i = 0 , j = 4 ;
auto itr1 = std :: seterusnya ( sesuatu perkara. bermula ( ) , i ) ;
auto itr2 = std :: seterusnya ( sesuatu perkara. bermula ( ) , j ) ;

std :: iter_swap ( itr1 , itr2 ) ;
untuk ( int i : sesuatu perkara ) {
std :: cout << i << '' ;
}
kembali 0 ;
}

Kepada kaedah utama program, kami telah mengisytiharkan pembolehubah vektor 'vec' dan memberikannya senarai vektor nombor. Kemudian, kami menentukan kedudukan indeks kepada pembolehubah 'i' dan 'j'. Kaedah std::iter_swap digunakan yang mengambil iter1 dan iter2 sebagai hujah. Iter1 dan iter2 diisytiharkan dengan kata kunci auto dan mempunyai operasi lelaran. Kaedah gelung for mencetak nilai tukar tatasusunan vektor semasa pelaksanaan.

Kaedah std::iter_swap berjaya menukar nilai vektor yang ditentukan.

Contoh 4: Program Penggunaan Tanpa Pembolehubah Sementara untuk Bertukar

Contoh ini menunjukkan cara baharu menukar nombor dalam kod C++ tanpa menggunakan pembolehubah sementara.

#include

menggunakan ruang nama std ;

int utama ( )
{
int x1 = dua , x2 = 12 ;
cout << 'Sebelum bertukar.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

x1 = x1 + x2 ;
x2 = x1 - x2 ;
x1 = x1 * x2 ;

cout << ' \n Selepas bertukar.' << endl ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << endl ;

kembali 0 ; }

Mari kita periksa pengendalian program ini. Di sini, kami telah mengisytiharkan x1 dan x2, yang pada mulanya ditetapkan dengan nombor, masing-masing. Kemudian, dengan menggunakan formula x1 = x1+ x2, kami menambah x1 dan x2 dan meletakkan hasilnya dalam x1. Ini menunjukkan bahawa x1 adalah sama dengan 2 tambah 12. Oleh itu, sekarang sama dengan 14. Kemudian, kita menggunakan formula x2 = x1 – x2. Ini menunjukkan bahawa x2 = 14 – 12. Oleh itu, x2 kini bersamaan dengan 2. Sekali lagi, kita gunakan formula x1 = x1 – x2. Ini menunjukkan bahawa x1 = 14 – 2. Oleh itu, x1 = 12 pada penghujungnya. Akibatnya, nombor telah ditukar.

Nombor yang ditukar sebelum dan selepas dipaparkan pada skrin gesaan berikut.

Kesimpulan

Di sini, kita melihat penerangan penuh swap() dalam C++, penggunaannya dan beberapa contoh yang menunjukkan cara ia berfungsi. Dengan menggunakan fungsi std:: swap(), dua nilai pembolehubah boleh ditukar. C++ STL termasuk fungsi terbina dalam yang dipanggil std::swap(). Fungsi swap(T& variable 1, T& variable 2) memanggil melalui rujukan, dan C++ overloads swap() bergantung pada jenis pembolehubah data juga dijelaskan dalam tutorial ini.