C++ Std Swap

C Std Swap

“Swapping adalah tindakan bertukar dua hal atau lebih. Data antara dua variabel dalam pemrograman dapat dialihkan. Pertukaran hal-hal antara dua orang dimungkinkan dalam kehidupan nyata. Nilai dua objek apa pun dapat ditukar menggunakan fungsi perpustakaan standar swap() di C++. Itu telah ditempatkan di bawah header 'utilitas' di C11. Fungsi swap() dalam C++ memiliki kompleksitas N untuk array karena setiap elemen harus ditukar secara individual, sedangkan kesulitan fungsi untuk konstanta adalah konstan. Fungsi swap() memberikan peringatan atau kesalahan jika salah satu elemen variabel gagal. Lihat tanda tangan fungsi untuk std::swap() di bawah ini:

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 , kita dapat mengakses fungsi swap di program kita. Di sini, kami telah menyertakan file header dengan dua pustaka penting lainnya. Kemudian, kami telah menetapkan metode utama int. Di dalam program utama, kami telah mendeklarasikan vektor dengan membuat variabel “arr.” Variabel 'arr' diinisialisasi dengan lima elemen bilangan bulat. Posisi indeks ditetapkan ke 'i' dan 'j' untuk bertukar. Variabel 'i' dan 'j' kemudian diteruskan ke metode std::swap untuk menukar nilai indeks yang ditentukan. Dengan for loop, kami telah mencetak array yang ditukar.

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.

#sertakan

menggunakan 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.