Pair
Pair
Pair konteyner, iki veri öğesinden veya nesneden oluşan <utility> başlığında tanımlanan basit bir kapsayıcıdır.
İlk öğe ‘birinci’, ikinci öğe ‘ikinci’ olarak, sıralama sabittir (birinci, ikinci).
Eş türde farklı olabilecek iki değeri birleştirmek için kullanılır. Eş, iki heterojen nesneyi tek bir birim olarak depolamanın bir yolunu sağlar.
- Eş, atanabilir, kopyalanabilir ve karşılaştırılabilir. Bir harita veya hash_map’da ayrılan nesnelerin dizisi, varsayılan olarak ‘ilk’ öğelerinin ‘ikinci’ değer nesneleri ile ilişkilendirilmiş benzersiz anahtar olduğu varsayılan ‘çifti’ türündedir.
Elemena erişmek için değişken ismini ve bunu izleyen nokta operatörünü, ardından birinci veya ikinci anahtar kelimeyi kullanıyoruz.
Tanımı:
pair(veri_tipi_1,veri_tipi_2) pair_ismi;
Kullanımı:
#include <iostream> #include <utility> int main() { pair<int,char> Pair1; Pair1.first=100; Pair1.second='A'; std:cout<<Pair1.first<<std::endl; std::cout<<Pair1.second<<std::endl; }
İlk değerle de başlatılabilir
pair(veritipi_1,veritipi_2) pair_ismi(deger1,deger2);
pair(char,,nt Nokta(A,100);
pair p1; //Varsayılan pair p2(1, 'a'); //farklı veri tipiyle başlatma pair p3(1, 10); //Aynı veri tipiyle başlatma pair p4(p3); //p3 pairini p4'e kopyalar.
Pair Üye fonksiyonları
make_pair(): Tür belirtimi yapmadan değerleri direkt belirtmenizi sağlar.
Pair_ismi = make_pair (deger1,deger2);
Operatorler(=,==,!=,>=,<=): 1- Assign(atama) Operatörü(=):
pair& operator= (const pair& pr);
Bu pr öğesini pair nesnesinin yeni içeriği olarak atar. Birinci değere pr ilk değeri atanır ve ikinci değere pr ikinci değeri atanır.
2- Pair karşılaştırma (==) operatörü: Verilen iki pairin pair 1 ve pair 2 olduğunu söylerseniz, karşılaştırma işleci, bu iki grubun ilk değerini ve ikinci değerini karşılaştırır, yani pair1.first, pair2.first’e eşitse veya etmezse VE eğer pair1.first Pair2.second’a eşit veya değil.
3-Pair Logic Operator(<,>,<=,>=): Verilen iki pair için kullanılabilir.
Ornek:
#include <iostream> #include <utility> #include <vector> #include <algorithm> #include <string> int main() { std::vector<std::pair<int, std::string>> v = { {2, "baz"},{2, "bar"},{1, "foo"} }; std::sort(v.begin(), v.end()); for(auto p: v) { std::cout << "(" << p.first << "," << p.second << ")\n"; } }
Ekran Çıktısı:
(1,foo) (2,bar) (2,baz)
Pair’in içindeki değerleri çekmek için kullanılır.
Ornek:
#include <iostream> #include <utility> int main() { auto p = std::make_pair(1, 3.14); std::cout << '(' << std::get<0>(p) << ", " << std::get<1>(p) << ")\n"; std::cout << '(' << std::get(p) << ", " << std::get<double>(p) << ")\n"; }
Ekran Çıktısı:
(1, 3.14) (1, 3.14)
Özellik
C++17 ile;
template<class T1, class T2> pair(T1, T2) -> pair<T1, T2>;
Yukarıdaki bu kullanım ile, veri türünü otomatik olarak çıkartabilir.
#include <utility> int main() { int a[2], b[3]; std::pair p{a, b}; }