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

Visual Studio Projesi