C++17 özellikleri: structured binding

structured binding ile tip heterojen tutucuların içeriklerini daha kolay biçimde kullanabiliriz. En bilinen kullanımı map tutucusunun elemanlarını dolaşma şeklinde:

    map<int, std::string > giants{ { 1994, "Amazon" },
                                    { 1995, "Ebay"s },
                                    { 1962, "Walmart"s },
                                    { 1998, "Google"s },
                                    { 2010, "Instagram"s },
                                    { 2004, "Facebook"s },
                                    { 2009, "Whatsapp"s }
                                    };

Örnek güzel olsun diye her bir şirketi wikiledim :)

Önceden bu mapin elemanlarını iteratör kullanarak veya range-based for kullanarak dolaşmalıydık:

    for (auto it = giants.cbegin(); it != giants.cend(); ++it)
    {
        cout << it->first << '-' << it->second << endl;
    }

    for (const auto& x : giants)
    {
        cout << x.first << '-' << x.second << endl;
    }

şimdi ise:

    for (const auto&[year, company] : giants)
    {
        cout << year << '-' << company << endl;
    }

kullanabiliriz

Aynı özelliği tuple ile de kullanabiliriz:

    auto company = make_tuple(1994, "Amazon");

    auto[year, name] = company;

değer ile veya & operatorü kullanarak

    auto&[year, name] = company;

referans ile alabiliriz.


C++17

157 Words

2018-06-19 03:00 +0300