Tuple
Tuple pair’e çok benzer. Aralarındaki tek fark, tuple sadece iki değişken tutmak zorunda değildir. Tuple sınırsız sayıda değişken tutabilir.
Kullanımı şu şekildedir.
#include <tuple> // Kullanmak icin koda eklenmesi gereken header std::tuple<degisken_turleri...> xx(degiskenler...);
Örnek:
std::tuple<int, char, std::string> foo(12, 'A', "ornek");
make_tuple
Tuple üretmek için make_tuple fonksiyonu da rahatlıkla kullanılabilir.
class foo; struct bar; auto xx = make_tuple(12, "abc", 4.5, foo, bar);
Ya da fonksiyondan tuple döndürülebilir.
tuple<int,char> foo(int x, char y) { return {x, y}; C++17 ile birlikte kullanılabilir. return std::make_tuple(x, y); // Her zaman gecerlidir. }
Tuple içerisindeki elemanlara std::get fonksiyonuyla erişilebilir.
Örneğin:
std::tuple<int, char, std::string> foo(12, 'A', "ornek"); auto x = std::get<0>(foo); auto y = std::get<1>(foo); std::cout << std::get<0>(foo) << " " << std::get<2>(foo) << "\n";
Tuple kullanımı:
#include <tuple> // Tuple kullanmak icin gerekli #include <string> #include <iostream> std::tuple<int, int> maketuple(int x, int y) //Fonksiyondan tuple dondurme { //make_tuple fonksiyonu ile birlikte fonksiyonlardan tuple dondurulebilir. // return {x,y}; //C++17 ile birlikte gecerli bir kullanimdir. return std::make_tuple(x, y); } int main() { // Tuple tanimlarken <> arasina tuple'in tutacagi verilerin türlerini yazariz. // Sonrasinda tuple'a ad veririz ve parantez icerisinde verilerin degerlerini gireriz. std::tuple<int, std::string, std::string> ogrenci( 150200100,"ornek", "ogrenci"); //auto ile birlikte otomatik olarak tuple'in tutacagi verilerin türleri cözülebilir. auto ogrenci2 = std::make_tuple(15055050, "ali", "veli"); // Bu kullanım da geceridir. //get fonksiyonu ile tuple icerisindeki verilere erisilebilir. //bunun icin <> icinde erisilecek verinin indisi girilir. //Parantez icine de verinin bulundugu tuple'in adi girilir. std::cout << "ogrenci no: " << std::get<0>(ogrenci) << "\n" << "ogrenci adi: " << std::get<1>(ogrenci) << "\n" << "ogrenci soyad: " << std::get<2>(ogrenci) << std::endl; std::cin.get(); return 0; }