C++ Standart Değiştirme

C Standart Degistirme



“Takas, iki veya daha fazla şeyi değiş tokuş etme eylemidir. Programlamada iki değişken arasındaki veriler değiştirilebilir. Gerçek hayatta iki kişi arasında eşya alışverişi mümkündür. Herhangi iki nesnenin değerleri, C++'daki standart kitaplık işlevi swap() kullanılarak değiştirilebilir. C11'de “yardımcı” başlığının altına yerleştirilmiştir. C++'daki swap() işlevi, diziler için N karmaşıklığına sahiptir, çünkü her öğenin tek tek değiştirilmesi gerekirken, işlevin sabitler için zorluğu sabittir. Değişken öğelerden herhangi biri başarısız olursa swap() işlevi bir uyarı veya hata verir. Aşağıdaki std::swap() için işlevin imzasına bakın:

Sözdizimi:

şablon < T sınıfı > geçersiz takas ( T & değişken_1 , T & değişken_2 ) ;

Her ikisi de depo değerleri olan birinci değişkenin değeri ve ikinci değişkenin değeri değiştirilecektir. Fonksiyon sadece değişkenlerin değerlerini değiştirir; çıktısı yoktur.”







C++'da swap() fonksiyonunun çalışması

Takas işlevi, aşağıdaki üç satır kullanılarak C++'da uygulanır.



Şablon geçersiz takas ( T & i , T & j ) {
T sıcaklık = standart :: hareket ( i ) ;
i = standart :: hareket ( j ) ;
j = standart :: hareket ( sıcaklık ) ;
}

“T temp = std::move(i)” ifadesi; “i” öğesinin bir kopyasını yapar ve çoğaltır. Burada “i = std::hareket(j)”; “i”nin orijinal öğelerini atar ve orijinal “j” yerine “j”nin “i” kopyasını saklar. “j = std:: hareket(temp)” formülü; “i”yi bir temp klonu ile kaydedin ve aynı temp içeriğini kaldırın. Ayrıca, swap() işlevinin yürütülmesi tamamlandıktan sonra temp değişkenini silin.



Örnek 1: Swap için std::move Yöntemini Kullanan Program

Aşağıda gösterildiği gibi, C++11 özelliği std::move kullanarak iki nesneyi değiştirebiliriz.





#include

#include



şablon
geçersiz takas ( T & a , T & b )
{
T sıcaklık = standart :: hareket ( a ) ;
a = standart :: hareket ( b ) ;
b = standart :: hareket ( sıcaklık ) ;
}
int ana ( )
{
standart :: vektör liste = { 10 , 12 , 13 , on beş , 16 , 17 } ;
int i = 3 , j = 5 ;
takas ( liste [ i ] , liste [ j ] ) ;
için ( int i : liste ) {
standart :: cout << i << '' ;
}
dönüş 0 ; }

“T” nesnesine sahip bir şablon bildirimimiz var. Daha sonra “swap” olarak fonksiyonu kurduk. İşlev, “T” türündeki &a ve &b parametrelerini alır. T& a, T& b argümanlarının, iletilen değişkenin adresini referans alması veya saklaması ve geri döndürmeden doğrudan bunlara uygulanması sonucunda, swap(T&a, T&b) işlevine referansla çağrı denir.



Void takasının içinde, std::move yöntemini kullanarak takas algoritmasını uyguladık. Ardından ana programı oluşturduk. Burada “list” değişkenini tanımladık ve onu sayısal değerler listesi ile başlattık. Takas için “i” ve “j” değerlerini belirledik. İkinci dizinde yer alan sayısal değer, beşinci dizindeki sayısal değer ile değiştirilmiştir. Daha sonra takas fonksiyonunu çağırdık ve takas için “i” ve “j” indekslerini ona ilettik. For döngüsü, takas edilen listeyi yazdırmak için kullanılır.

Çıktı, değiştirilen listeyi görüntüledi. Oluşturulan yeni listenin belirtilen indekslere göre değer değiştirdiğini gözlemleyebilirsiniz.

Örnek 2: Değiştirmek İçin std::swap Yöntemini Kullanan Program

Yardımcı program başlığında (C++ 11'de) bulunan std::swap mekanizmasının kullanılması olağan düzeltmedir. İşlevini sağlamak için iki nesnenin değerleri değiştirilir.

#include

#include

#include



int ana ( )
{
standart :: vektör dizisi = { 3 , 6 , 9 , on beş , 13 } ;
int i = 3 , j = 4 ;

standart :: takas ( varış [ i ] , varış [ j ] ) ;

için ( int i : varış ) {
standart :: cout << i << '' ;
}

dönüş 0 ;
}

başlık dosyasını içe aktararak programımızda takas fonksiyonuna erişebiliriz. Burada, iki önemli kitaplığı daha içeren başlık dosyasını ekledik. Daha sonra int main metodunu kurduk. Programın main içinde vektörü “arr” değişkenini oluşturarak bildirdik. 'arr' değişkeni, tamsayının beş öğesiyle başlatılır. İndeks pozisyonları, takas için “i” ve “j”ye atanmıştır. “i” ve “j” değişkenleri daha sonra belirtilen indeks değerinin takası için std::swap yöntemine iletilir. For döngüsü ile değiştirilen dizileri yazdırdık.

std::swap yöntemi kullanılarak takas işlemi sonrası elde edilen liste aşağıdaki gibi görüntülenir:

Örnek 3: Değiştirmek için std::iter_swap Yöntemini Kullanan Program

Algoritmanın başlığında listelenen std::iter_swap algoritmasının kullanılması ek bir seçenektir. Çalışma şekli, sağlanan yineleyicilerin işaret ettiği nesnelerin değerlerini değiştirmektir.

#include

#include

#include

#include



int ana ( )
{
standart :: vektörvec = { 64 , 61 , 62 , 63 , 60 } ;
int i = 0 , j = 4 ;
Oto itr1 = standart :: sonraki ( bir şey. başlamak ( ) , i ) ;
Oto itr2 = standart :: sonraki ( bir şey. başlamak ( ) , j ) ;

standart :: iter_swap ( itr1 , itr2 ) ;
için ( int i : bir şey ) {
standart :: cout << i << '' ;
}
dönüş 0 ;
}

Programın ana yöntemine bir vektör değişkeni “vec” tanımladık ve ona bir vektör sayı listesi atadık. Daha sonra “i” ve “j” değişkenine indeks pozisyonunu belirledik. iter1 ve iter2'yi argüman olarak alan std::iter_swap yöntemi çağrılır. iter1 ve iter2, auto anahtar sözcüğüyle bildirilir ve yineleme işlemine sahiptir. for döngüsü yöntemi, yürütme sırasında vektör dizisinin değiştirilen değerlerini yazdırır.

std::iter_swap yöntemi, belirtilen vektörlerin değerlerini başarıyla değiştirdi.

Örnek 4: Swap için Geçici Değişkenler Olmadan Kullanma Programı

Bu örnek, geçici değişkenler kullanmadan C++ kodunda sayıları değiştirmenin yeni bir yolunu gösterir.

#include

ad alanı std kullanarak ;

int ana ( )
{
int x1 = iki , x2 = 12 ;
cout << 'Takas etmeden önce.' << son ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << son ;

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

cout << ' \n Değiştirdikten sonra.' << son ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << son ;

dönüş 0 ; }

Şimdi bu programın işleyişini inceleyelim. Burada başlangıçta sayı ile belirlenen x1 ve x2'yi sırasıyla tanımladık. Sonra x1 = x1+ x2 formülünü kullanarak x1 ve x2'yi toplayıp sonucu x1'e koyuyoruz. Bu, x1'in 2 artı 12'ye eşit olduğunu gösterir. Bu nedenle, şimdi 14'e eşittir. Ardından, x2 = x1 – x2 formülünü uygularız. Bu x2 = 14 – 12 olduğunu gösterir. Dolayısıyla x2 şimdi 2'ye eşittir. Bir kez daha x1 = x1 – x2 formülünü uyguluyoruz. Bu, x1 = 14 – 2 olduğunu gösterir. Bu nedenle, sonunda x1 = 12 olur. Sonuç olarak, numaralar değiştirildi.

Öncesi ve sonrası değiştirilen numara, aşağıdaki istem ekranında görüntülenir.

Çözüm

Burada, C++'da swap()'ın tam açıklamasını, kullanımını ve nasıl çalıştığını gösteren bazı örnekleri gözden geçireceğiz. std::swap() işlevi kullanılarak iki değişkenin değeri değiştirilebilir. C++ STL, std::swap() adlı yerleşik bir işlev içerir. takas(T& değişken 1, T& değişken 2) işlevi referansa göre çağrılır ve veri değişkenlerinin türüne bağlı olarak C++ swap() aşırı yüklemeleri de bu eğitimde açıklanmıştır.