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;
}