Sintaksis:
templat < kelas T > ruang kosong menukar ( T & variabel_1 , T & variabel_2 ) ;Baik nilai variabel pertama dan variabel kedua, keduanya menyimpan nilai, harus ditukar. Fungsi hanya mengganti nilai variabel; tidak memiliki keluaran.”
Bekerja dari fungsi swap() di C++
Fungsi swap diimplementasikan dalam C++ menggunakan tiga baris berikut.
Templat ruang kosong menukar ( T & saya , T & j ) {
suhu = std :: bergerak ( saya ) ;
saya = std :: bergerak ( j ) ;
j = std :: bergerak ( suhu ) ;
}
Pernyataan “T temp = std::move(i)”; membuat salinan elemen 'i' dan menggandakannya. Di sini, “i = std::move(j)”; membuang item asli 'i' dan menyimpan salinan 'i' dari 'j' di tempat 'j' asli. Rumus “j = std:: move(temp)”; simpan 'i' dengan tiruan temp, dan hapus konten temp yang identik. Juga, Hapus variabel temp setelah eksekusi fungsi swap() selesai.
Contoh 1: Program Menggunakan std::move Metode ke Swap
Seperti yang ditunjukkan di bawah ini, kita dapat menukar dua objek menggunakan fitur C++11 std::move.
#sertakan
#sertakan
templat
ruang kosong menukar ( T & sebuah , T & b )
{
suhu = std :: bergerak ( sebuah ) ;
sebuah = std :: bergerak ( b ) ;
b = std :: bergerak ( suhu ) ;
}
ke dalam utama ( )
{
std :: vektor daftar = { 10 , 12 , 13 , limabelas , 16 , 17 } ;
ke dalam saya = 3 , j = 5 ;
menukar ( daftar [ saya ] , daftar [ j ] ) ;
untuk ( ke dalam saya : daftar ) {
std :: cout << saya << ' ' ;
}
kembali 0 ; }
Kami memiliki deklarasi template yang memiliki objek 'T'. Setelah itu, kami telah menetapkan fungsi sebagai 'swap'. Fungsi ini mengambil dua parameter &a dan &b, bertipe “T”. Sebagai hasil dari argumen T& a, T& b yang mereferensikan atau menyimpan alamat dari variabel yang diteruskan dan menerapkannya secara langsung tanpa kembali, fungsi swap(T& a, T& b) disebut panggilan dengan referensi.
Di dalam void swap, kita telah menerapkan algoritma swapping dengan menggunakan metode std::move. Kemudian, kami membangun program utama. Di sini, kami telah mendeklarasikan variabel 'daftar' dan menginisialisasinya dengan daftar nilai numerik. Kami telah menetapkan nilai untuk 'i' dan 'j' untuk bertukar. Nilai numerik yang terletak pada indeks kedua diganti dengan nilai numerik pada indeks kelima. Kemudian, kami memanggil fungsi swap dan meneruskan indeks 'i' dan 'j' ke sana untuk bertukar. Perulangan for digunakan untuk mencetak daftar yang ditukar.
Output menampilkan daftar yang dimodifikasi. Anda dapat mengamati daftar baru yang dihasilkan menukar nilai sesuai dengan indeks yang ditentukan.
Contoh 2: Program Menggunakan std::swap Metode untuk Swap
Memanfaatkan mekanisme std::swap yang ditemukan di header utilitas (dalam C++11) adalah perbaikan yang biasa. Nilai dua objek dialihkan untuk membuatnya berfungsi.
#sertakan#sertakan
#sertakan
ke dalam utama ( )
{
std :: vectorarr = { 3 , 6 , 9 , limabelas , 13 } ;
ke dalam saya = 3 , j = 4 ;
std :: menukar ( arr [ saya ] , arr [ j ] ) ;
untuk ( ke dalam saya : arr ) {
std :: cout << saya << ' ' ;
}
kembali 0 ;
}
Dengan mengimpor file header
Daftar yang diperoleh setelah operasi swapping dengan menggunakan metode std::swap ditampilkan sebagai berikut:
Contoh 3: Program Menggunakan Metode std::iter_swap untuk Bertukar
Penggunaan algoritme std::iter_swap, yang tercantum di header algoritme, merupakan opsi tambahan. Cara kerjanya adalah dengan mengganti nilai objek yang ditunjuk oleh iterator yang disediakan.
#sertakan#sertakan
#sertakan
#sertakan
ke dalam utama ( )
{
std :: vektorvec = { 64 , 61 , 62 , 63 , 60 } ;
ke dalam saya = 0 , j = 4 ;
mobil itr1 = std :: Berikutnya ( hal. mulai ( ) , saya ) ;
mobil itr2 = std :: Berikutnya ( hal. mulai ( ) , j ) ;
std :: iter_swap ( itr1 , itr2 ) ;
untuk ( ke dalam saya : hal ) {
std :: cout << saya << ' ' ;
}
kembali 0 ;
}
Untuk metode utama program, kami telah mendeklarasikan variabel vektor 'vec' dan memberinya daftar vektor angka. Kemudian, kami menentukan posisi indeks untuk variabel 'i' dan 'j'. Metode std::iter_swap dipanggil yang menggunakan iter1 dan iter2 sebagai argumen. Iter1 dan iter2 dideklarasikan dengan kata kunci auto dan memiliki operasi iterasi. Metode for loop mencetak nilai yang ditukar dari array vektor saat dieksekusi.
Metode std::iter_swap berhasil menukar nilai dari vektor yang ditentukan.
Contoh 4: Program Penggunaan Tanpa Variabel Sementara untuk Ditukar
Contoh ini menunjukkan cara baru menukar angka dalam kode C++ tanpa menggunakan variabel sementara.
#sertakanmenggunakan namespace std ;
ke dalam utama ( )
{
ke dalam x1 = dua , x2 = 12 ;
cout << 'Sebelum bertukar.' << akhir ;
cout << 'x1 = ' << x1 << ',x2 = ' << x2 << akhir ;
x1 = x1 + x2 ;
x2 = x1 - x2 ;
x1 = x1 * x2 ;
cout << ' \n Setelah bertukar.' << akhir ;
cout << 'x1 = ' << x1 << ',x2 = ' << x2 << akhir ;
kembali 0 ; }
Mari kita periksa pengoperasian program ini. Di sini, kami telah mendeklarasikan x1 dan x2, yang awalnya ditetapkan dengan nomor, masing-masing. Kemudian, dengan menggunakan rumus x1 = x1+ x2, kita tambahkan x1 dan x2 dan masukkan hasilnya ke x1. Hal ini menunjukkan bahwa x1 sama dengan 2 ditambah 12. Jadi, sekarang sama dengan 14. Kemudian, kita terapkan rumus x2 = x1 – x2. Hal ini menunjukkan bahwa x2 = 14 – 12. Oleh karena itu, x2 sekarang sama dengan 2. Sekali lagi, kami menerapkan rumus x1 = x1 – x2. Hal ini menunjukkan bahwa x1 = 14 – 2. Oleh karena itu, x1 = 12 pada akhirnya. Akibatnya, nomor telah dialihkan.
Nomor yang ditukar sebelum dan sesudah ditampilkan pada layar prompt berikut.
Kesimpulan
Di sini, kita membahas deskripsi lengkap swap() di C++, penggunaannya, dan beberapa contoh yang menunjukkan cara kerjanya. Dengan menggunakan fungsi std:: swap(), nilai dua variabel dapat dialihkan. C++ STL menyertakan fungsi bawaan yang disebut std::swap(). Fungsi swap(T& variabel 1, T& variabel 2) memanggil dengan referensi, dan C++ membebani swap() tergantung pada jenis variabel data juga dijelaskan dalam tutorial ini.