{"id":610,"date":"2018-11-09T06:42:43","date_gmt":"2018-11-09T06:42:43","guid":{"rendered":"http:\/\/www.yazilimperver.com\/?p=610"},"modified":"2022-08-13T19:29:19","modified_gmt":"2022-08-13T19:29:19","slug":"haftalik-c-4-yapisal-baglama-structured-binding","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/","title":{"rendered":"Haftal\u0131k C++ &#8211; 4 Yap\u0131sal Ba\u011flama (&#8220;Structured Binding&#8221;)"},"content":{"rendered":"<p>Merhabalar arkada\u015flar, yeni bir haftal\u0131k C++ yaz\u0131s\u0131 ile birlikteyiz. Bu yaz\u0131m\u0131zda da modern C++ 17 ile birlikte gelen bir di\u011fer kabiliyet olan <em>&#8220;Structured Binding&#8221;<\/em>&#8216;e bakaca\u011f\u0131z. Ben yaz\u0131mda buna k\u0131saca &#8220;yap\u0131sal ba\u011flama&#8221; diyece\u011fim.<br \/>\nBu kabiliyet bize ne kazand\u0131r\u0131yor? K\u0131saca bu kabiliyet ile birlikte birden fazla de\u011fi\u015fkenin tek bir ifade ile<em> &#8220;tuple&#8221;\/&#8221;pair&#8221;<\/em> ya da benzeri yap\u0131lar\u0131 kullanarak ilklendirebilece\u011fiz, daha \u00f6nce <em>std::tuple<\/em> ve benzeri yap\u0131larla dolayl\u0131 yoldan sa\u011flanan \u00e7oklu de\u011fer d\u00f6nme kabiliyetini de art\u0131k kullanabilece\u011fiz. Bu kabiliyetin arkas\u0131nda yatan motivasyonun detaylar\u0131 i\u00e7in kaynaklar k\u0131sm\u0131nda verdi\u011fim standart dok\u00fcman\u0131na bir g\u00f6z atman\u0131zda fayda var.<br \/>\nBuna benzer kabiliyetleri ba\u015fka diller a\u00e7\u0131p atama (&#8220;<em>unpacking<\/em>&#8220;), \u00e7oklu atama (&#8220;<em>multiple assignment<\/em>&#8220;) isimleri ile sunuyorlar. \u00d6r. Pyhton da `(x, y) = 10, 20` diyerekten tek bir sat\u0131rda ilgili de\u011fi\u015fkenleri atayabiliyorsunuz.<br \/>\n\u0130\u015fte bu kabiliyet art\u0131k C++ ile de sunuluyor.<br \/>\nYaz\u0131mda detayl\u0131 olarak bu kabiliyeti tek tek anlatmaktansa genel yap\u0131s\u0131ndan bahsedip daha \u00f6nceki yaz\u0131lar\u0131mda oldu\u011fu gibi \u00e7e\u015fitli \u00f6rnekler \u00fczerinden giderek sizlere aktarmay\u0131 planl\u0131yorum.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Genel yap\u0131<\/strong><\/span><\/h2>\n<p>Yap\u0131sal ba\u011flama genel olarak a\u015fa\u011f\u0131daki format ile \u00f6zetlenebilir:<br \/>\n<span style=\"color: #ff0000;\">auto [element1, element2, &#8230;.] = { pair, tuple, struct ya da dizi tan\u0131mlamalar\u0131 }<\/span><\/p>\n<p>Dikkat edilecek hususlar:<\/p>\n<ul>\n<li>&#8220;element1, &#8230;, &#8221; &#8216;de virg\u00fcl ile ayr\u0131lan elemanlar\u0131n adeti ile atama operat\u00f6r\u00fc sa\u011f\u0131ndaki elemanlar\u0131n say\u0131s\u0131 ayn\u0131 olmal\u0131d\u0131r,<\/li>\n<li>Atama operat\u00f6r\u00fcn\u00fcn sa\u011f\u0131nda ise a\u015fa\u011f\u0131dakilerden birisi olabilir:\n<ul>\n<li>std:: pair ya da std::tuple<\/li>\n<li>bir struct nesnesi. Struct nesnesi i\u00e7erisindeki \u00fcyelerin hi\u00e7birisi statik olmamal\u0131. Bunlar\u0131n tan\u0131mlanma s\u0131ras\u0131na g\u00f6re atama operat\u00f6r\u00fcn\u00fcn solundaki elemanlar doldurulacak<\/li>\n<\/ul>\n<\/li>\n<li>Sabit boyutlu dizi<\/li>\n<li>Yukar\u0131daki durumlardan birisi sa\u011flanmad\u0131\u011f\u0131 durumda derleme hatas\u0131 ile kar\u015f\u0131la\u015f\u0131rs\u0131n\u0131z<\/li>\n<li>Bu arada atamalar s\u0131ras\u0131nda gereksiz kopyalamalar\u0131 \u00f6nlemek ad\u0131na olabildi\u011fince atama operat\u00f6r\u00fcn\u00fcn solunda referans tiplerini kullanmaya \u00f6zen g\u00f6stermekte fayda var<\/li>\n<li>Operat\u00f6r\u00fcn solunda <em><strong>auto, auto&amp;, const auto, const auto&amp;<\/strong><\/em> ve <em><strong>auto&amp;&amp;<\/strong><\/em> kullan\u0131mlar\u0131 m\u00fcmk\u00fcn.<\/li>\n<\/ul>\n<h2><span style=\"color: #0000ff;\"><strong>std::tuple ile kullan\u0131m\u0131<\/strong><\/span><\/h2>\n<p>Yap\u0131sal ba\u011flama&#8217;n\u0131n ilk kullan\u0131m \u00f6rne\u011fi <em>tuple<\/em>&#8216;lar ile alakl\u0131 olacak. \u00d6zellikle &#8220;<em>pair<\/em>&#8221; (bayad\u0131r mevcut) ya da &#8220;<em>tuple<\/em>&#8221; (C++ 11 ile birlikte geldi) benzeri yap\u0131lar ile u\u011fra\u015f\u0131yor iseniz bunlar\u0131n bar\u0131nd\u0131rd\u0131\u011f\u0131 de\u011ferlere eri\u015fme ihtiyac\u0131 duymu\u015fsunuzdur. <em>std::pair<\/em> asl\u0131nda <em>map<\/em> konteynerinin temel ta\u015f\u0131 diyebiliriz.<em> Std::tuple<\/em> da <em>std::pair<\/em>&#8216;in asl\u0131nda bir anlamda genelle\u015ftirilmi\u015f hali. Normal \u015fartlarda <em>tuple<\/em> ile ifade edilen bir de\u011fi\u015fkene ili\u015fkin elemanlar\u0131 farkl\u0131 de\u011fi\u015fkenlere atamak (ya da a\u00e7\u0131p kullanmak) i\u00e7in \u00f6nceden takip edilen y\u00f6ntem <em>std::tie()<\/em> metoduydu. Yeni gelen bu kabiliyet ile birlikte <strong><span style=\"color: #ff0000;\">&#8220;auto [var1, var2, &#8230;] = tuple;&#8221;<\/span><\/strong> kullan\u0131m\u0131 ile bu de\u011fi\u015fkenlere eri\u015fim sa\u011flan\u0131yor. Hemen buna ili\u015fkin bir kullan\u0131ma bakal\u0131m:<\/p>\n<pre class=\"lang:c++ decode:true \">#include &lt;iostream&gt;\r\n#include &lt;tuple&gt;\r\n\r\nint main()\r\n{\r\n    auto employee = std::make_tuple(\"Ahmet\", \"Can\", 35, 174.3);\r\n\r\n    \/\/ C++ 17 Oncesi\r\n    \/\/ tuple icerisindeki degisklenlere erismek icin\r\n    {\r\n        \/\/ Oncelikle calisan verileri tutmak icin degiskenleri tanimlayalim\r\n        std::string name;\r\n        std::string surname;\r\n        int age;\r\n        double height;\r\n        \r\n        std::tie(name, surname, age, height) = employee;\r\n        std::cout &lt;&lt; \"name = \" &lt;&lt; name &lt;&lt; \" surname = \" &lt;&lt; surname &lt;&lt; \" age = \" &lt;&lt; age &lt;&lt; \" height = \" &lt;&lt; height &lt;&lt; \"cm\" &lt;&lt; std::endl;\r\n    }\r\n\r\n    \/\/ C++ 17 Sonrasi kullanim\r\n    {\r\n        auto [ name, surname, age, height ] = employee;\r\n        std::cout &lt;&lt; \"name = \" &lt;&lt; name &lt;&lt; \" surname = \" &lt;&lt; surname &lt;&lt; \" age = \" &lt;&lt; age &lt;&lt; \" height = \" &lt;&lt; height &lt;&lt; \"cm\" &lt;&lt; std::endl;\r\n    }\r\n\r\n    return 0;\r\n}<\/pre>\n<p><em>tuple<\/em> kullan\u0131m\u0131ndaki bir di\u011fer s\u0131k\u0131nt\u0131 ise <em>std::tie()<\/em> ile <em>tuple<\/em>&#8216;daki elemanlar\u0131n referans\u0131n\u0131 almak m\u00fcmk\u00fcn de\u011fil idi. Bunun i\u00e7in tek yol &#8220;<em>std::get&lt;2&gt;(employee)<\/em>&#8221; metodu. Yeni mekanizma ile art\u0131k bu da m\u00fcmk\u00fcn:<\/p>\n<pre class=\"lang:c++ decode:true \">#include &lt;iostream&gt;\r\n#include &lt;tuple&gt;\r\n\r\nint main()\r\n{\r\n    auto employee = std::make_tuple(\"Ahmet\", \"Can\", 35, 174.3);\r\n\r\n    \/\/ C++ 17 Oncesi\r\n    \/\/ tuple icerisindeki degiskenlerin referanslarini almak icin\r\n    {\r\n        \/\/ Oncelikle calisan verileri tutmak icin degiskenleri tanimlayalim\r\n        auto&amp; name = std::get&lt;0&gt;(employee);\r\n        auto&amp; surname = std::get&lt;1&gt;(employee);\r\n        auto&amp; age = std::get&lt;2&gt;(employee);\r\n        auto&amp; height = std::get&lt;2&gt;(employee);\r\n        \r\n        std::cout &lt;&lt; \"name = \" &lt;&lt; name &lt;&lt; \" surname = \" &lt;&lt; surname &lt;&lt; \" age = \" &lt;&lt; age &lt;&lt; \" height = \" &lt;&lt; height &lt;&lt; \"cm\" &lt;&lt; std::endl;\r\n\r\n        \/\/ Yasi artt\u0131ralim\r\n        age++;\r\n\r\n        std::cout &lt;&lt; \"yeni yas = \" &lt;&lt; std::get&lt;2&gt;(employee) &lt;&lt; std::endl;\r\n    }\r\n\r\n    \/\/ C++ 17 Sonrasi kullanim\r\n    {\r\n        auto&amp; [ name, surname, age, height ] = tuple;\r\n\r\n        std::cout &lt;&lt; \"name = \" &lt;&lt; name &lt;&lt; \" surname = \" &lt;&lt; surname &lt;&lt; \" age = \" &lt;&lt; age &lt;&lt; \" height = \" &lt;&lt; height &lt;&lt; \"cm\" &lt;&lt; std::endl;\r\n\r\n        \/\/ Yasi artt\u0131ralim\r\n        age++;\r\n\r\n        std::cout &lt;&lt; \"yeni yas = \" &lt;&lt; std::get&lt;2&gt;(employee) &lt;&lt; std::endl;\r\n    }\r\n\r\n    return 0;\r\n}<\/pre>\n<p>Buradaki kullan\u0131mlar\u0131n benzeri <em>std::pair<\/em> ve <em>std::array<\/em> i\u00e7in de ge\u00e7erlidir.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>struct<\/strong><strong> ile kullan\u0131m\u0131<\/strong><\/span><\/h2>\n<p><em>std::tuple<\/em>&#8216;a benzer \u015fekilde <em>struct<\/em> nesnelerinin de her bir eleman\u0131na bu mekanizma ile tek bir seferde ula\u015fabiliyoruz.<\/p>\n<pre class=\"lang:c++ decode:true \">#include &lt;iostream&gt;\r\n#include &lt;string&gt;\r\n#include &lt;tuple&gt;\r\n\r\nstruct Employee\r\n{\r\n    std::string name;\r\n    std::string surname;\r\n    int age;\r\n    double height;\r\n};\r\n\r\nint main()\r\n{\r\n    Employee ahmet { \"Ahmet\", \"Can\", 35, 174.3 };\r\n\r\n    \/\/ Oncelikle calisan verileri tutmak icin degiskenleri tanimlayalim\r\n    std::string name;\r\n    std::string surname;\r\n    int age;\r\n    double height;\r\n    \r\n    \/\/ degerleri alalim\r\n    auto [ name, surname, age, height ] = ahmet;\r\n    std::cout &lt;&lt; \"name = \" &lt;&lt; name &lt;&lt; \" surname = \" &lt;&lt; surname &lt;&lt; \" age = \" &lt;&lt; age &lt;&lt; \" height = \" &lt;&lt; height &lt;&lt; \"cm\" &lt;&lt; std::endl;\r\n\r\n    return 0;\r\n}\r\n<\/pre>\n<p>Bu kullan\u0131mlar\u0131n benzer \u015fekilde <em>struct<\/em> d\u00f6nen metotlarda da kullanabilirsiniz.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Diziler<\/strong><strong> ile kullan\u0131m\u0131<\/strong><\/span><\/h2>\n<p>Yukar\u0131da anlat\u0131lan kullan\u0131mlar ile birlikte yap\u0131sal ba\u011flamaya geleneksel diziler ile de kullanabilirsiniz. A\u015fa\u011f\u0131da bu kullan\u0131ma ili\u015fki \u00f6rne\u011fi g\u00f6rebilirsiniz.<br \/>\nBurada \u00f6nemli olan ilgili dizinin boyutunun belli olmas\u0131.<\/p>\n<pre class=\"lang:c++ decode:true \">int arrayExample[] = { 47, 11 };\r\n\r\n\/\/ x ve y arrayExample elemanlar\u0131 ile doldurulur\r\nauto [x, y] = arr; \r\n\r\n\/\/ Derleme hatas\u0131 boyutlar farkl\u0131\r\nauto [z] = arr;<\/pre>\n<h2><span style=\"color: #0000ff;\"><strong>move semanti\u011fi<\/strong><strong> ile kullan\u0131m\u0131<\/strong><\/span><\/h2>\n<p>Yap\u0131sal ba\u011flama yukar\u0131da bahsetti\u011fim gibi move semanti\u011fi ile de kullan\u0131labilmektedir. A\u015fa\u011f\u0131da bu kullan\u0131ma ili\u015fkin \u00f6rnek kodu g\u00f6rebilirsiniz:<\/p>\n<pre class=\"lang:c++ decode:true \">Employee ms = { \"Ahmet\", \"Can\", 35, 174.5 };\r\n\r\n\/\/ \u0130lgili ms nesnesine rvalue referans\r\nauto&amp;&amp; [name, surname, age, height] = std::move(ms); \r\n\r\n\/\/ \"Ahmet Can\" bas\u0131l\u0131r\r\nstd::cout &lt;&lt; \"ms.name: \" &lt;&lt; ms.surname &lt;&lt; '\\n'; \r\n\r\n\/\/ \u0130smi de tasiyalim\r\nstd::string newName = std::move(name); \r\n\r\n\/\/ Degeri belli olmayan bir sey basilir (cunku tasindi yukar\u0131da)\r\nstd::cout &lt;&lt; \"ms.surname: \" &lt;&lt; ms.surname &lt;&lt; std::endl; \r\n\r\n\/\/ Benzer sekilde degeri belli olmayan bir sey basilir (cunku tasindi yukar\u0131da)\r\nstd::cout &lt;&lt; \"name: \" &lt;&lt; name &lt;&lt; std::endl; \r\n\r\n\/\/ Ali basilir\r\nstd::cout &lt;&lt; \"New name: \" &lt;&lt; newName &lt;&lt; std::endl;<\/pre>\n<h2><span style=\"color: #0000ff;\"><strong>std::map konteyneri<\/strong><strong> ile kullan\u0131m\u0131<\/strong><\/span><\/h2>\n<p>Bu mekanizman\u0131n bir di\u011fer kullan\u0131m\u0131 ise<em> std::map<\/em> konteynerinin elemanlar\u0131n\u0131n \u00fczerinde gezinme.<\/p>\n<pre class=\"lang:c++ decode:true\">#include &lt;iostream&gt;\r\n#include &lt;string&gt;\r\n#include &lt;unordered_map&gt;\r\n\r\ntemplate&lt;typename K, typename V&gt;\r\nvoid printMap(std::unordered_map&lt;K, V&gt; const &amp;m)\r\n{\r\n    for (auto const&amp; pair: m) \r\n    {\r\n        std::cout &lt;&lt; \"{\" &lt;&lt; pair.first &lt;&lt; \": \" &lt;&lt; pair.second &lt;&lt; \"}\\n\";\r\n    }\r\n}\r\n\r\nint main()\r\n{\r\n    std::unordered_map&lt;int, std::string&gt; m = \r\n    {\r\n        {1, \"Begum\"},\r\n        {8, \"Ahmet\"},\r\n        {3, \"Ayse\"}\r\n    };\r\n\r\n    \/\/ C++17 Oncesi\r\n    for (auto const&amp; pair: m) \r\n    {\r\n        std::cout &lt;&lt; \"{\" &lt;&lt; pair.first &lt;&lt; \": \" &lt;&lt; pair.second &lt;&lt; \"}\\n\";\r\n    }\r\n\r\n    \/\/ C++17 Sonras\u0131\r\n    \/\/ Daha anlasilir kullanim\r\n    for (auto&amp;&amp; [key, value]: m) \r\n    {\r\n        std::cout &lt;&lt; \"{\" &lt;&lt; key &lt;&lt; \": \" &lt;&lt; value &lt;&lt; \"}\\n\";\r\n    }\r\n\r\n    return 0;\r\n}<\/pre>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar<\/strong><\/span><\/h2>\n<ul>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/wg21.link\/p0217r3\"><strong>https:\/\/wg21.link\/p0217r3<\/strong><\/a><\/span><\/li>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2015\/p0144r0.pdf\"><strong>http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2015\/p0144r0.pdf<\/strong><\/a><\/span><\/li>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/skebanga.github.io\/structured-bindings\/\"><strong>https:\/\/skebanga.github.io\/structured-bindings\/<\/strong><\/a><\/span><\/li>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.bfilipek.com\/2017\/07\/cpp17-details-simplifications.html#structured-binding-declarations\"><strong>https:\/\/www.bfilipek.com\/2017\/07\/cpp17-details-simplifications.html#structured-binding-declarations<\/strong><\/a><\/span><\/li>\n<\/ul>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Merhabalar arkada\u015flar, yeni bir haftal\u0131k C++ yaz\u0131s\u0131 ile birlikteyiz. Bu yaz\u0131m\u0131zda da modern C++ 17 ile birlikte gelen bir di\u011fer kabiliyet olan &#8220;Structured Binding&#8221;&#8216;e bakaca\u011f\u0131z. Ben yaz\u0131mda buna k\u0131saca &#8220;yap\u0131sal ba\u011flama&#8221; diyece\u011fim. Bu kabiliyet bize ne kazand\u0131r\u0131yor? K\u0131saca bu kabiliyet ile birlikte birden fazla de\u011fi\u015fkenin tek bir ifade ile &#8220;tuple&#8221;\/&#8221;pair&#8221; ya da benzeri yap\u0131lar\u0131 kullanarak&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":174,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,41,188],"tags":[13,234,241,42,105,240,238,203,239],"class_list":["post-610","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","category-yazilim-muhendisligi","tag-c","tag-c-17","tag-haftalik","tag-modern-c","tag-stdmove","tag-stdtie","tag-structured-binding","tag-weekly","tag-yapisal-baglama"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ - 4 Yap\u0131sal Ba\u011flama (&quot;Structured Binding&quot;) - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[:tr]Haftal\u0131k C++ - 4 Yap\u0131sal Ba\u011flama (&quot;Structured Binding&quot;)[:en]Weekly C++ - 4 Structured Binding[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Merhabalar arkada\u015flar, yeni bir haftal\u0131k C++ yaz\u0131s\u0131 ile birlikteyiz. Bu yaz\u0131m\u0131zda da modern C++ 17 ile birlikte gelen bir di\u011fer kabiliyet olan &#8220;Structured Binding&#8221;&#8216;e bakaca\u011f\u0131z. Ben yaz\u0131mda buna k\u0131saca &#8220;yap\u0131sal ba\u011flama&#8221; diyece\u011fim. Bu kabiliyet bize ne kazand\u0131r\u0131yor? K\u0131saca bu kabiliyet ile birlikte birden fazla de\u011fi\u015fkenin tek bir ifade ile &#8220;tuple&#8221;\/&#8221;pair&#8221; ya da benzeri yap\u0131lar\u0131 kullanarak... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-09T06:42:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-13T19:29:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png\" \/>\n\t<meta property=\"og:image:width\" content=\"32\" \/>\n\t<meta property=\"og:image:height\" content=\"32\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ &#8211; 4 Yap\u0131sal Ba\u011flama (&#8220;Structured Binding&#8221;)\",\"datePublished\":\"2018-11-09T06:42:43+00:00\",\"dateModified\":\"2022-08-13T19:29:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/\"},\"wordCount\":1320,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"c++\",\"c++ 17\",\"haftal\u0131k\",\"Modern C++\",\"std::move\",\"std::tie\",\"structured binding\",\"Weekly\",\"yap\u0131sal ba\u011flama\"],\"articleSection\":[\"C++\",\"Modern C++\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/\",\"name\":\"[:tr]Haftal\u0131k C++ - 4 Yap\u0131sal Ba\u011flama (\\\"Structured Binding\\\")[:en]Weekly C++ - 4 Structured Binding[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2018-11-09T06:42:43+00:00\",\"dateModified\":\"2022-08-13T19:29:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ &#8211; 4 Yap\u0131sal Ba\u011flama (&#8220;Structured Binding&#8221;)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[:tr]Haftal\u0131k C++ - 4 Yap\u0131sal Ba\u011flama (\"Structured Binding\")[:en]Weekly C++ - 4 Structured Binding[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/","og_locale":"tr_TR","og_type":"article","og_title":"[:tr]Haftal\u0131k C++ - 4 Yap\u0131sal Ba\u011flama (\"Structured Binding\")[:en]Weekly C++ - 4 Structured Binding[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Merhabalar arkada\u015flar, yeni bir haftal\u0131k C++ yaz\u0131s\u0131 ile birlikteyiz. Bu yaz\u0131m\u0131zda da modern C++ 17 ile birlikte gelen bir di\u011fer kabiliyet olan &#8220;Structured Binding&#8221;&#8216;e bakaca\u011f\u0131z. Ben yaz\u0131mda buna k\u0131saca &#8220;yap\u0131sal ba\u011flama&#8221; diyece\u011fim. Bu kabiliyet bize ne kazand\u0131r\u0131yor? K\u0131saca bu kabiliyet ile birlikte birden fazla de\u011fi\u015fkenin tek bir ifade ile &#8220;tuple&#8221;\/&#8221;pair&#8221; ya da benzeri yap\u0131lar\u0131 kullanarak... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2018-11-09T06:42:43+00:00","article_modified_time":"2022-08-13T19:29:19+00:00","og_image":[{"width":32,"height":32,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png","type":"image\/png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ &#8211; 4 Yap\u0131sal Ba\u011flama (&#8220;Structured Binding&#8221;)","datePublished":"2018-11-09T06:42:43+00:00","dateModified":"2022-08-13T19:29:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/"},"wordCount":1320,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["c++","c++ 17","haftal\u0131k","Modern C++","std::move","std::tie","structured binding","Weekly","yap\u0131sal ba\u011flama"],"articleSection":["C++","Modern C++","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/","name":"[:tr]Haftal\u0131k C++ - 4 Yap\u0131sal Ba\u011flama (\"Structured Binding\")[:en]Weekly C++ - 4 Structured Binding[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2018-11-09T06:42:43+00:00","dateModified":"2022-08-13T19:29:19+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/11\/09\/haftalik-c-4-yapisal-baglama-structured-binding\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ &#8211; 4 Yap\u0131sal Ba\u011flama (&#8220;Structured Binding&#8221;)"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=610"}],"version-history":[{"count":9,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/610\/revisions"}],"predecessor-version":[{"id":2642,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/610\/revisions\/2642"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/174"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}