{"id":2216,"date":"2021-07-23T22:02:29","date_gmt":"2021-07-23T22:02:29","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2216"},"modified":"2021-08-15T20:57:13","modified_gmt":"2021-08-15T20:57:13","slug":"haftalik-c-39-stdchrono-1","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/","title":{"rendered":"Haftal\u0131k C++ 39 &#8211; std::chrono &#8211; 1 (std::chrono::duration)"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-2266  aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/08\/img_61197f8f56156.jpeg\" alt=\"\" width=\"346\" height=\"201\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/08\/img_61197f8f56156.jpeg 295w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/08\/img_61197f8f56156-150x87.jpeg 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/08\/img_61197f8f56156-200x116.jpeg 200w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/p>\n<p>Evet, sevgili yaz\u0131l\u0131mperver dostlar\u0131m, C++ yaz\u0131lar\u0131m\u0131za h\u0131z kesmeden devam ediyoruz (evet h\u0131z\u0131m\u0131z 1-2 ppm [post per month] olsa da). C++ 11 STL k\u00fct\u00fcphanesi ile gelen, \u00f6nceki bir \u00e7ok yaz\u0131mda de\u011findi\u011fim ve muhtemelen C++ 11&#8217;e ili\u015fkin de\u011finece\u011fim son \u00f6nemli kabiliyetlerden biri olan ve uzun s\u00fcredir sizler ile payla\u015fmay\u0131 planlad\u0131\u011f\u0131m std::chrono k\u00fct\u00fcphanesini sayfam\u0131za konuk ediyoruz. Bu sefer di\u011fer yaz\u0131lar\u0131mdan farkl\u0131 olarak, k\u00fct\u00fcphane ve ilgili kabiliyeti tek bir yaz\u0131da aktarmaktansa, bir ka\u00e7 yaz\u0131da sizler ile payla\u015fmay\u0131 planl\u0131yorum. Bu yaz\u0131 biraz girizgah, temel kavramlarda giri\u015f olacak ve bu kavramlardan birisini masaya yat\u0131raca\u011f\u0131z. Sonraki yaz\u0131lar\u0131mda da, kalan kavramlara daha yak\u0131nda bak\u0131yor olaca\u011f\u0131z.<\/p>\n<p>Her ne kadar, C++ 11&#8217;den \u00f6nce de POSIX uyumlu k\u00fct\u00fcphaneler sunuluyor olsa da, bunlar standart bir API\/aray\u00fcz \u00fczerinden sunulmuyorlard\u0131 ve genelde ilgili i\u015fletim sistemi ve platforma g\u00f6re de farkl\u0131l\u0131klar g\u00f6sterebiliyordu. C++ 11 ile gelen std::chrono k\u00fct\u00fcphanesinin bizlere kazand\u0131rd\u0131\u011f\u0131 en \u00f6nemli \u00f6zellik, bu kabiliyetlerin derlenerek standart bir \u015fekilde sunulmas\u0131 oldu diyebiliriz. Ayr\u0131ca, geli\u015ftirilen bir \u00e7ok uygulamada da kulland\u0131\u011f\u0131m\u0131z i\u00e7in de \u00e7ok \u00f6nemli bir kabiliyet oldu\u011funu de\u011ferlendiriyorum.<\/p>\n<p>Bu k\u00fct\u00fcphanenin geli\u015ftirilmesinde g\u00f6z \u00f6n\u00fcnde bulundurulan bir di\u011fer husus da, zamanlay\u0131c\u0131 ve saatlerin farkl\u0131 sistemlerde farkl\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fck ve hassasiyet sunabilecekleridir ki. \u00d6zellikle g\u00f6m\u00fcl\u00fc ve ger\u00e7ek zamanl\u0131 yaz\u0131l\u0131m geli\u015ftirenlerinizin, bu konuyu yakinen tecr\u00fcbe ettiklerini d\u00fc\u015f\u00fcn\u00fcyorum. Bu noktada, STL geli\u015ftiricileri, bu hususlar\u0131 kotarabilmek ad\u0131na \u00fc\u00e7 \u00f6nemli kavram geli\u015ftirmi\u015flerdir. Bunlar: <strong>s\u00fcre<\/strong> (<em><strong>&#8220;duration&#8221;<\/strong><\/em>), <strong>zaman noktas\u0131<\/strong> (&#8220;<em><strong>time point<\/strong><\/em>&#8220;) ve <strong>saat<\/strong> (&#8220;<em><strong>clock<\/strong><\/em>&#8220;)&#8217;tir. Bu yaz\u0131mda ilk kavram olan, s\u00fcreyi detayl\u0131 bir \u015fekilde sizler ile payla\u015faca\u011f\u0131m. Zaman noktas\u0131, belirli bir referans zamandan ge\u00e7en s\u00fcreyi ifade eder. Saat&#8217;ler ise sistemlerden ilgili referans noktas\u0131n\u0131 ve ge\u00e7en s\u00fcreyi almak i\u00e7in kullan\u0131lacak olan nesnelerdir.<\/p>\n<p>A\u015fa\u011f\u0131da verilen fig\u00fcr, bu ili\u015fkiyi zann\u0131mca gayet iyi g\u00f6stermektedir:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.informit.com\/content\/images\/chap5_9780321623218\/elementLinks\/05fig04_alt.jpg\" alt=\"5.7. Clocks and Timers | The C++ Standard Library: Utilities | InformIT\" \/><\/p>\n<p>Bu k\u00fct\u00fcphaneyi kullanmak i\u00e7in &lt;chrono&gt; ba\u015fl\u0131k dosyas\u0131n\u0131 eklemeniz yeterlidir. Ayr\u0131ca \u00e7o\u011fu s\u0131n\u0131f ve fonksiyonlarda std::chrono adres uzay\u0131 i\u00e7erisinde yer al\u0131r (olaki adres uzay\u0131n\u0131 belirtmezsem ve hata al\u0131rsan\u0131z diye diyorum).<\/p>\n<p>\u015eimdi, bu yaz\u0131m\u0131z\u0131n yak\u0131\u015f\u0131kl\u0131s\u0131na bakal\u0131m.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>S\u00fcre (&#8220;Duration&#8221;)<\/strong><\/span><\/h2>\n<p>Bu k\u00fct\u00fcphane i\u00e7erisinde belirli bir zaman biriminde tan\u0131ml\u0131 olan bir s\u00fcre\/zaman aral\u0131\u011f\u0131n\u0131 ifade etmek i\u00e7in kullan\u0131lan s\u0131n\u0131ft\u0131r. Bu birimler neler olabilir? Saniye, dakika, saat gibi bilindik s\u00fcre birimleri olabilece\u011fi gibi sizlerin tan\u0131mlayaca\u011f\u0131 s\u00fcre birimleri de olabilir. \u0130lgili birime g\u00f6re s\u00fcre de\u011fi\u015fir ve bunlar aras\u0131nda d\u00f6n\u00fc\u015f\u00fcm yap\u0131labilir. Burada \u00f6nemli olan bu s\u00fcrenin bir adet\/miktar bilgisi (&#8220;tick&#8221;) bilgisi i\u00e7ermesidir. Peki bunu nas\u0131l tan\u0131ml\u0131yoruz? Hemen <strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/en.cppreference.com\/w\/cpp\/chrono\/duration\">referans sayfas\u0131nda<\/a> <\/span><\/strong>verilen bilgileri inceleylim. \u00d6ncelikle s\u0131n\u0131f tan\u0131m\u0131na bakal\u0131m:<\/p>\n<p><strong><span class=\"kw1\">template<\/span><span class=\"sy1\">&lt;<\/span>\u00a0<span class=\"kw1\">class<\/span> Rep,\u00a0\u00a0<span class=\"kw1\">class<\/span>\u00a0Period\u00a0<span class=\"sy1\">=<\/span>\u00a0<a href=\"http:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio\"><span class=\"kw1514\">std::<span class=\"me2\">ratio<\/span><\/span><\/a><span class=\"sy1\">&lt;<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">&gt; <\/span><span class=\"sy1\">&gt;<\/span>\u00a0<span class=\"kw1\">class<\/span>\u00a0duration<span class=\"sy4\">;<\/span><\/strong><\/p>\n<p>g\u00f6rece\u011finiz \u00fczere \u015fablon bir s\u0131n\u0131f ve iki temel \u015fablon parametresi kullan\u0131l\u0131yor: &#8220;Rep&#8221; ve &#8220;Period&#8221;. Ama\u00e7, bu iki parametre ile s\u00fcre merfhumunu ifade etmek.<\/p>\n<ul>\n<li><strong>Rep<\/strong>: \u0130lgili s\u00fcreye ili\u015fkin adet bilgisini ifade edecek aritmetik veri tipini ifade eder ki genelde bu bir tam say\u0131 (int) olur ama zorunlu da de\u011fildir (yani float ya da double da olabilir),<\/li>\n<li><strong>Period<\/strong>: \u0130lgili s\u00fcrenin saniye cinsinden kar\u015f\u0131l\u0131\u011f\u0131n\u0131 ifade eder. Bir di\u011fer deyi\u015f ile saniyede ka\u00e7 adetinin oldu\u011funu ifade eden bir oran\u0131 temsil eder. Mealen \ud83d\ude42 ka\u00e7 saniye ile bu s\u00fcreyi ifade ederim. \u00d6r. 1 sn i\u00e7in bu oran 1&#8217;dir. Yukar\u0131da da verdi\u011fim sayfada ifade edildi\u011fi gibi bu bilgi sadece d\u00f6n\u00fc\u015f\u00fcmlerde kullan\u0131lmaktad\u0131r.\n<ul>\n<li>Eminim burada kullan\u0131lan <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio\">std::ratio<\/a><\/strong><\/span> s\u0131n\u0131f\u0131 dikkatinizi \u00e7ekmi\u015ftir. Bu s\u0131n\u0131f da, C++ 11 ile gelen ve derleme zaman\u0131n rasyonel say\u0131lar\u0131 ifade etmek i\u00e7in kullan\u0131labilecek bir mekanizma sunan s\u0131n\u0131ft\u0131r. Bu s\u0131n\u0131f\u0131n tan\u0131m\u0131 \u015fu \u015fekilde: &#8216;<strong>template&lt;std::intmax_t Num, std::intmax_t Denom = 1&gt; class ratio;&#8217;,\u00a0<\/strong>burada Num, pay&#8217;\u0131 ve Denom da payday\u0131 ifade eder.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Yukar\u0131daki ifade ile temel s\u00fcreleri ya da kendi tan\u0131mlamalar\u0131n\u0131z\u0131 a\u015fa\u011f\u0131daki gibi tan\u0131mlayabilirsiniz:<\/p>\n<pre class=\"lang:c++ decode:true \">\/\/ Ornek bazi sure tanimlamalari\r\nusing miliSaniye = std::chrono::duration&lt;int, std::ratio&lt;1, 1000&gt;&gt;;\r\nusing dakika = std::chrono::duration&lt;int, std::ratio&lt;60&gt;&gt;;\r\n\r\n\/\/ Saniyeyi de adet yerini bulsun diye ekleyelim :)\r\nusing saniye = std::chrono::duration&lt;int, std::ratio&lt;1&gt;&gt;;\r\n\r\n\/\/ Ari kusu saniyede 200 adete kadar kanat cirpabilir\r\nusing ariKusuKanatCirpma = std::chrono::duration&lt;int, std::ratio&lt;1, 200&gt;&gt;;\r\n<\/pre>\n<p>\u0130yi de sevgili yaz\u0131l\u0131mperver, bu s\u00fcreleri her uygulamam i\u00e7in, hele de temel s\u00fcre tipleri i\u00e7in her seferinde tan\u0131mlamal\u0131 m\u0131y\u0131m? Elbette hay\u0131r, k\u00fct\u00fcphane i\u00e7erisinde bilindik tipler i\u00e7in bunlar tan\u0131ml\u0131.<\/p>\n<p>Peki hangileri ve bunlar\u0131n tipi ne? Hemen, onlar\u0131 da sizler ile payla\u015fay\u0131m:<\/p>\n<table class=\"t-dsc-begin\">\n<tbody>\n<tr class=\"t-dsc-hitem\">\n<td><strong>S\u00fcre Birimi<\/strong><\/td>\n<td><strong>Tip<\/strong><\/td>\n<td><strong>Tan\u0131m<\/strong><\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>Nano saniye<\/td>\n<td><span class=\"t-lc\">std::chrono::nanoseconds<\/span><\/td>\n<td><span class=\"t-c\"><span class=\"mw-geshi cpp source-cpp\">std::chrono::duration<span class=\"sy1\">&lt;<\/span><span class=\"coMULTI\">\/*signed integer type of at least 64 bits*\/<\/span>,\u00a0<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"http:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio\"><span class=\"kw1518\">std::<span class=\"me2\">nano<\/span><\/span><\/a><\/strong><\/span><span class=\"sy1\">&gt;<\/span><\/span><\/span><\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>Mikro saniye<\/td>\n<td><span class=\"t-lc\">std::chrono::microseconds<\/span><\/td>\n<td><span class=\"t-c\"><span class=\"mw-geshi cpp source-cpp\">std::chrono::duration<span class=\"sy1\">&lt;<\/span><span class=\"coMULTI\">\/*signed integer type of at least 55 bits*\/<\/span>,\u00a0<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"http:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio\"><span class=\"kw1519\">std::<span class=\"me2\">micro<\/span><\/span><\/a><\/strong><\/span><span class=\"sy1\">&gt;<\/span><\/span><\/span><\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>Mili saniye<\/td>\n<td><span class=\"t-lc\">std::chrono::milliseconds<\/span><\/td>\n<td><span class=\"t-c\"><span class=\"mw-geshi cpp source-cpp\">std::chrono::duration<span class=\"sy1\">&lt;<\/span><span class=\"coMULTI\">\/*signed integer type of at least 45 bits*\/<\/span>,\u00a0<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"http:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio\"><span class=\"kw1520\">std::<span class=\"me2\">milli<\/span><\/span><\/a><\/strong><\/span><span class=\"sy1\">&gt;<\/span><\/span><\/span><\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>Saniye<\/td>\n<td><span class=\"t-lc\">std::chrono::seconds<\/span><\/td>\n<td><span class=\"t-c\"><span class=\"mw-geshi cpp source-cpp\">std::chrono::duration<span class=\"sy1\">&lt;<\/span><span class=\"coMULTI\">\/*signed integer type of at least 35 bits*\/<\/span><span class=\"sy1\">&gt;<\/span><\/span><\/span><\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>Dakika<\/td>\n<td><span class=\"t-lc\">std::chrono::minutes<\/span><\/td>\n<td><span class=\"t-c\"><span class=\"mw-geshi cpp source-cpp\">std::chrono::duration<span class=\"sy1\">&lt;<\/span><span class=\"coMULTI\">\/*signed integer type of at least 29 bits*\/<\/span>,\u00a0<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"http:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio\"><span class=\"kw1514\">std::<span class=\"me2\">ratio<\/span><\/span><\/a><\/strong><\/span><span class=\"sy1\">&lt;<\/span><span class=\"nu0\">60<\/span><span class=\"sy1\">&gt;&gt;<\/span><\/span><\/span><\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>Saat<\/td>\n<td><span class=\"t-lc\">std::chrono::hours<\/span><\/td>\n<td><span class=\"t-c\"><span class=\"mw-geshi cpp source-cpp\">std::chrono::duration<span class=\"sy1\">&lt;<\/span><span class=\"coMULTI\">\/*signed integer type of at least 23 bits*\/<\/span>,\u00a0<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"http:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio\"><span class=\"kw1514\">std::<span class=\"me2\">ratio<\/span><\/span><\/a><\/strong><\/span><span class=\"sy1\">&lt;<\/span><span class=\"nu0\">3600<\/span><span class=\"sy1\">&gt;&gt;<\/span><\/span><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ayr\u0131ca, buraya \u015funu da ekleyelim ki C++ 20 ile birlikte, g\u00fcn, hafta, ay ve y\u0131l da eklenmi\u015ftir. Sevgili yaz\u0131l\u0131mperver dostlar\u0131m, burada \u015fu konuya da yeri gelmi\u015fken de\u011fineyim. Bazen, C++ 11 veya daha sonra dile eklenen \u00f6zelliklere, yeni C++ standartlar\u0131 ile de eklemeler olabilmektedir. Bu sebeple bunlar\u0131 kullan\u0131rken, elinizin alt\u0131ndaki derleyiciye ve &#8220;cppreference&#8221; gibi sayfalara ba\u015fvurmay\u0131 unutmay\u0131n.<\/p>\n<p>Gelelim bu &#8220;duration&#8221; s\u0131n\u0131f\u0131 ile sunulan API&#8217;lere.<\/p>\n<p>Bunlardan en \u00f6nemlisi, &#8220;<em>count()<\/em>&#8221; API&#8217;si. Bu API kullanarak, ilgili s\u00fcreyi ifade eden say\u0131sal adeti elde edebilirsiniz. Hemen bir \u00f6rnek ile bunu inceleyelim:<\/p>\n<pre class=\"lang:c++ decode:true \">#include &lt;chrono&gt;\r\n#include &lt;iostream&gt;\r\n\r\nint main()\r\n{\r\n    \/\/ 3 milisaniye\r\n    std::chrono::milliseconds ms{3}; \r\n\r\n    \/\/ Yukar\u0131daki milisaniye s\u00fcresini aritmetik bir operasyon ile mikrosaniye olarak tutal\u0131m\r\n    std::chrono::microseconds us = 2*ms;\r\n\r\n    \/\/ Saniyenin kayan say\u0131lar ile ifade edilmesi\r\n    std::chrono::duration&lt;double, std::ratio&lt;1&gt;&gt; fractalSecond(3.5);\r\n \r\n    std::cout &lt;&lt;  \"3 ms s\u00fcresine ili\u015fkin adet: \" &lt;&lt; ms.count() &lt;&lt; \" adet\\n\"\r\n              &lt;&lt;  \"6000 mikrosaniye s\u00fcresine ili\u015fkin adet: \" &lt;&lt; us.count() &lt;&lt; \" adet\\n\"\r\n              &lt;&lt;  \"Kayan say\u0131 ile s\u00fcre adetinin ifade edilmesi: \" &lt;&lt; fractalSecond.count() &lt;&lt; \" adet\\n\";       \r\n}<\/pre>\n<p>Bunlar\u0131n yan\u0131nda, bu s\u0131n\u0131f ile birlikte, yukar\u0131daki \u00f6rnekte de g\u00f6rebilece\u011finiz \u00fczere, s\u00fcreler ile temel aritmetik i\u015flemler ya da kar\u015f\u0131la\u015ft\u0131rma i\u015flemleri de yapabilirsiniz.<\/p>\n<pre class=\"lang:c++ decode:true\">#include &lt;chrono&gt;\r\n#include &lt;iostream&gt;\r\nint main()\r\n{\r\n    \/\/ Farkl\u0131 s\u00fcre birimlerini birbiri ile kar\u015f\u0131la\u015ft\u0131rabilirsiniz\r\n    if(std::chrono::seconds(2) == std::chrono::milliseconds(2000))\r\n        std::cout &lt;&lt;  \"2 s == 2000 ms\\n\";\r\n    else\r\n        std::cout &lt;&lt;  \"2 s != 2000 ms\\n\";\r\n \r\n    \/\/ Farkl\u0131 s\u00fcre birimlerini birbiri ile kar\u015f\u0131la\u015ft\u0131rabilirsiniz\r\n    if(std::chrono::seconds(61) &gt; std::chrono::minutes(1))\r\n        std::cout &lt;&lt;  \"61 s &gt; 1 min\\n\";\r\n    else\r\n        std::cout &lt;&lt;  \"61 s &lt;= 1 min\\n\";\r\n \r\n    \/\/ \u00d6n tan\u0131ml\u0131 chrono tiplerini kullanmak i\u00e7in bu adres uzay\u0131n\u0131 ekleyebilirsiniz\r\n    using namespace std::chrono_literals;\r\n \r\n    static_assert(1h == 60min);\r\n    static_assert(1min == 60s);\r\n    return 0;\r\n}<\/pre>\n<p>Yukar\u0131daki \u00f6rneklerde de g\u00f6rebilece\u011finiz \u00fczere bir tak\u0131m dolayl\u0131 d\u00f6n\u00fc\u015f\u00fcmler ger\u00e7ekle\u015ftirilebilmektedir. Burada, \u00f6nemli olan bunun y\u00f6n\u00fcd\u00fcr. D\u00f6n\u00fc\u015f\u00fcm y\u00f6n\u00fc, daha detayl\u0131 birime y\u00f6nelik olursa bir s\u0131k\u0131nt\u0131 yok. Yani saniyeyi, milisaniyeye dolayl\u0131 bir \u015fekilde s\u0131k\u0131nt\u0131s\u0131z \u00e7evirebilirsiniz. Fakat tersi durum, her zaman m\u00fcmk\u00fcn olmayabilir ve bilgi\/keskinlik kaybedebiliriz. Hemen bir \u00f6rnek ile buna bakal\u0131m:<\/p>\n<pre class=\"lang:c++ decode:true\">std::chrono::seconds sec(30);\r\n\r\n\/\/ A\u015fa\u011f\u0131daki d\u00f6n\u00fc\u015f\u00fcm otomatik olarak yap\u0131lamaz ve hataya sebebiyet verir\r\nstd::chrono::minutes m1 = sec;<\/pre>\n<p>Peki bu durumlarda ne yapaca\u011f\u0131z? Bu tarz d\u00f6n\u00fc\u015f\u00fcmler i\u00e7in de &#8220;<em>std::duration_cast<\/em>&#8221; &#8216;i kullan\u0131yoruz. Nas\u0131l m\u0131 hemen bakal\u0131m.<\/p>\n<pre class=\"lang:c++ decode:true \">std::chrono::seconds sec(30); \r\n\r\n\/\/ A\u015fa\u011f\u0131daki d\u00f6n\u00fc\u015f\u00fcm art\u0131k hata vermez.\r\nstd::chrono::minutes m1 = std::chrono::duration_cast&lt;std::chrono::minutes&gt;(sec);<\/pre>\n<p>Bu d\u00f6n\u00fc\u015f\u00fcmler \u00f6zellikle ifade edilen s\u00fcreler i\u00e7in kullan\u0131lan aritmetik veri tipleri farkl\u0131 ise daha \u00f6nemli bir hal al\u0131r.<\/p>\n<p>\u015eimdi, bu noktaya kadar g\u00f6rd\u00fc\u011f\u00fcm\u00fcz kabiliyetlere ili\u015fkin bir \u00f6rnek kodu inceleyelim. Bu kod par\u00e7as\u0131 ile amac\u0131m\u0131z verilen bir s\u00fcreyi, saat, dakika ve saniye&#8217;lere ay\u0131rmak:<\/p>\n<pre class=\"lang:c++ decode:true \">#include &lt;chrono&gt;\r\n#include &lt;iostream&gt;\r\n#include &lt;iomanip&gt;\r\n\r\nusing namespace std::chrono_literals;\r\n\r\nint main()\r\n{\r\n    \/\/ Elimizdeki s\u00fcre bilgisi\r\n    std::chrono::milliseconds ms{7285042}; \r\n\r\n    \/\/ \u015eimdi bunu saat, dakika ve saniyeye ay\u0131ral\u0131m\r\n    \/\/ Dikkat edelim, burada bu milisaniye cinsinden verilen s\u00fcre,\r\n    \/\/ saat cinsine d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcrken k\u0131rp\u0131l\u0131yor, yuvarlanm\u0131yor!\r\n    std::chrono::hours hours           = duration_cast&lt;std::chrono::hours&gt;(ms);\r\n    std::chrono::minutes minutes       = duration_cast&lt;std::chrono::minutes&gt;(ms % chrono::hours{1} );\r\n    std::chrono::seconds seconds       = duration_cast&lt;std::chrono::seconds&gt;(ms % chrono::minutes{1} );\r\n    std::chrono::milliseconds mseconds = duration_cast&lt;std::chrono::milliseconds&gt;(ms % chrono::seconds{1} );\r\n    \r\n    \/\/ \u015eimdi bu s\u00fcreyi bast\u0131ral\u0131m\r\n    std::cout &lt;&lt; \"[\" &lt;&lt; setfill('0') &lt;&lt; setw(2) &lt;&lt; hours.count() &lt;&lt; \"::\"\r\n                     &lt;&lt; setfill('0') &lt;&lt; setw(2) &lt;&lt; minutes.count() &lt;&lt; \"::\"\r\n                     &lt;&lt; setfill('0') &lt;&lt; setw(2) &lt;&lt; seconds.count() &lt;&lt; \"::\"\r\n                     &lt;&lt; setfill('0') &lt;&lt; setw(2) &lt;&lt; mseconds.count() &lt;&lt;\"]\";       \r\n    \r\n    return 0;\r\n}<\/pre>\n<p>Burada \u00f6nemli olan iki nokta: d\u00f6n\u00fc\u015f\u00fcmlerde yuvarlama de\u011fil, k\u0131rpma yap\u0131lmas\u0131d\u0131r (Tavan ya da taban ya da yuvarlama i\u00e7in C++ 17 ile bir tak\u0131m API&#8217;ler de sunuldu\u011funu burada ifade etmekte fayda var). Mod\u00fclo operat\u00f6r\u00fcn\u00fcn de bu s\u00fcre de\u011fi\u015fkenleri ile kullan\u0131labilmesinin ne kadar b\u00fcy\u00fck kolayl\u0131k sa\u011flamas\u0131.<\/p>\n<p>Yukar\u0131daki API&#8217;ler yan\u0131nda, statik olan a\u015fa\u011f\u0131daki API&#8217;ler de sunulmaktad\u0131r:<\/p>\n<ul>\n<li><em>zero()<\/em>: 0 saniye d\u00f6ner,<\/li>\n<li><em>min\/max()<\/em>: minimum ve maksimum s\u00fcre bilgilerini d\u00f6ner.<\/li>\n<\/ul>\n<p>Son olarak C++14 ile gelen, kullan\u0131c\u0131 tan\u0131ml\u0131 de\u011fi\u015fmezler de mevcut. Bu da ne demek diyorsan\u0131z, ilerlemeden \u00f6nce a\u015fa\u011f\u0131daki yaz\u0131ma bir g\u00f6z atabilirsiniz \ud83d\ude09<\/p>\n<p><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/12\/24\/haftalik-c-34-kullanici-tanimli-degismezler-user-defined-literals\/\">Haftal\u0131k C++ 34 Kullan\u0131c\u0131 Tan\u0131ml\u0131 De\u011fi\u015fmezler<\/a><\/strong><\/span><\/p>\n<p>Yanl\u0131z bunlar\u0131 kullanmak i\u00e7in &#8220;std::literals::chrono_literals&#8221; adres uzay\u0131n\u0131 ortama eklemeli ya da tiplerin \u00f6n\u00fcne eklemelisiniz. Bunun ile birlikte a\u015fa\u011f\u0131daki kullan\u0131mlar m\u00fcmk\u00fcn olabilmekte:<\/p>\n<table class=\"t-dsc-begin\" style=\"height: 349px;\" width=\"687\">\n<tbody>\n<tr class=\"t-dsc-header\">\n<td colspan=\"2\"><strong>Kullan\u0131c\u0131 Tan\u0131ml\u0131 Chrono De\u011fi\u015fmezleri<\/strong><\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>\n<div class=\"t-dsc-member-div\">\n<div><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" title=\"cpp\/chrono\/operator&quot;&quot;h\" href=\"https:\/\/en.cppreference.com\/w\/cpp\/chrono\/operator%22%22h\"><span class=\"t-lines\">operator&#8221;&#8221;h<\/span><\/a><\/strong><\/span><\/div>\n<\/div>\n<\/td>\n<td>Saat ifade eden <span class=\"t-lc\"><strong class=\"selflink\">std::chrono::duration<\/strong><\/span> de\u011fi\u015fmezi<\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>\n<div class=\"t-dsc-member-div\">\n<div><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" title=\"cpp\/chrono\/operator&quot;&quot;min\" href=\"https:\/\/en.cppreference.com\/w\/cpp\/chrono\/operator%22%22min\"><span class=\"t-lines\">operator&#8221;&#8221;min<\/span><\/a><\/strong><\/span><\/div>\n<\/div>\n<\/td>\n<td><span class=\"t-lc\">Saat ifade eden <strong class=\"selflink\">std::chrono::duration<\/strong><\/span> de\u011fi\u015fmezi<\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>\n<div class=\"t-dsc-member-div\">\n<div><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" title=\"cpp\/chrono\/operator&quot;&quot;s\" href=\"https:\/\/en.cppreference.com\/w\/cpp\/chrono\/operator%22%22s\"><span class=\"t-lines\">operator&#8221;&#8221;s<\/span><\/a><\/strong><\/span><\/div>\n<\/div>\n<\/td>\n<td>Saat ifade eden <span class=\"t-lc\"><strong class=\"selflink\">std::chrono::duration<\/strong><\/span> de\u011fi\u015fmezi<\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>\n<div class=\"t-dsc-member-div\">\n<div><strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" title=\"cpp\/chrono\/operator&quot;&quot;ms\" href=\"https:\/\/en.cppreference.com\/w\/cpp\/chrono\/operator%22%22ms\"><span class=\"t-lines\">operator&#8221;&#8221;ms<\/span><\/a><\/span><\/strong><\/div>\n<\/div>\n<\/td>\n<td>Saat ifade eden <span class=\"t-lc\"><strong class=\"selflink\">std::chrono::duration<\/strong><\/span> de\u011fi\u015fmezi<\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>\n<div class=\"t-dsc-member-div\">\n<div><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" title=\"cpp\/chrono\/operator&quot;&quot;us\" href=\"https:\/\/en.cppreference.com\/w\/cpp\/chrono\/operator%22%22us\"><span class=\"t-lines\">operator&#8221;&#8221;us<\/span><\/a><\/strong><\/span><\/div>\n<\/div>\n<\/td>\n<td>Saat ifade eden <span class=\"t-lc\"><strong class=\"selflink\">std::chrono::duration<\/strong><\/span> de\u011fi\u015fmezi<\/td>\n<\/tr>\n<tr class=\"t-dsc\">\n<td>\n<div class=\"t-dsc-member-div\">\n<div><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" title=\"cpp\/chrono\/operator&quot;&quot;ns\" href=\"https:\/\/en.cppreference.com\/w\/cpp\/chrono\/operator%22%22ns\"><span class=\"t-lines\">operator&#8221;&#8221;ns<\/span><\/a><\/strong><\/span><\/div>\n<\/div>\n<\/td>\n<td>Saat ifade eden <span class=\"t-lc\"><strong class=\"selflink\">std::chrono::duration<\/strong><\/span> de\u011fi\u015fmezi<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bunlara ili\u015fkin de basit bir \u00f6rne\u011fe bakal\u0131m:<\/p>\n<pre class=\"lang:c++ decode:true\">#include &lt;iostream&gt;\r\n#include &lt;chrono&gt;\r\n \r\nint main()\r\n{\r\n    using namespace std::chrono_literals;\r\n    auto day = 24h;\r\n    auto halfhour = 0.5h;\r\n    std::cout &lt;&lt; \"Bir g\u00fcn \" &lt;&lt; day.count() &lt;&lt; \" saattir\\n\"\r\n              &lt;&lt; \"Yar\u0131m saat \" &lt;&lt; halfhour.count() &lt;&lt; \" saattir\\n\";\r\n}<\/pre>\n<p>Evet dostlar, std::chrono k\u00fct\u00fcphanesine ili\u015fkin, std::duration s\u0131n\u0131f\u0131na detayl\u0131 bir bak\u0131\u015f att\u0131k. Bu konu ile ilgili kaynaklar k\u0131sm\u0131na da bir sayfa ekliyorum. Vakti olanlar oraya da bakabilirler. Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle bol kodlu g\u00fcnler diliyorum.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar<\/strong><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/chrono\/duration\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/chrono\/duration<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/numeric\/ratio\/ratio<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/time-duration\"><span style=\"color: #008000;\"><strong>https:\/\/www.modernescpp.com\/index.php\/time-duration<\/strong><\/span><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Evet, sevgili yaz\u0131l\u0131mperver dostlar\u0131m, C++ yaz\u0131lar\u0131m\u0131za h\u0131z kesmeden devam ediyoruz (evet h\u0131z\u0131m\u0131z 1-2 ppm [post per month] olsa da). C++ 11 STL k\u00fct\u00fcphanesi ile gelen, \u00f6nceki bir \u00e7ok yaz\u0131mda de\u011findi\u011fim ve muhtemelen C++ 11&#8217;e ili\u015fkin de\u011finece\u011fim son \u00f6nemli kabiliyetlerden biri olan ve uzun s\u00fcredir sizler ile payla\u015fmay\u0131 planlad\u0131\u011f\u0131m std::chrono k\u00fct\u00fcphanesini sayfam\u0131za konuk ediyoruz. Bu sefer&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/\">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":[46,398,234,242,799,881,878,807,880,884,882,883,48,879],"class_list":["post-2216","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","category-yazilim-muhendisligi","tag-c-11","tag-c-14","tag-c-17","tag-c-20","tag-chrono","tag-clock","tag-duration","tag-duration_cast","tag-epoch","tag-literals","tag-period","tag-ratio","tag-stl","tag-timepoint"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 39 - std::chrono - 1 (std::chrono::duration) - 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\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Haftal\u0131k C++ 39 - std::chrono - 1 (std::chrono::duration) - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Evet, sevgili yaz\u0131l\u0131mperver dostlar\u0131m, C++ yaz\u0131lar\u0131m\u0131za h\u0131z kesmeden devam ediyoruz (evet h\u0131z\u0131m\u0131z 1-2 ppm [post per month] olsa da). C++ 11 STL k\u00fct\u00fcphanesi ile gelen, \u00f6nceki bir \u00e7ok yaz\u0131mda de\u011findi\u011fim ve muhtemelen C++ 11&#8217;e ili\u015fkin de\u011finece\u011fim son \u00f6nemli kabiliyetlerden biri olan ve uzun s\u00fcredir sizler ile payla\u015fmay\u0131 planlad\u0131\u011f\u0131m std::chrono k\u00fct\u00fcphanesini sayfam\u0131za konuk ediyoruz. Bu sefer... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-23T22:02:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-15T20:57:13+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=\"11 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\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 39 &#8211; std::chrono &#8211; 1 (std::chrono::duration)\",\"datePublished\":\"2021-07-23T22:02:29+00:00\",\"dateModified\":\"2021-08-15T20:57:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/\"},\"wordCount\":1570,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"C++ 11\",\"C++ 14\",\"c++ 17\",\"C++ 20\",\"chrono\",\"clock\",\"duration\",\"duration_cast\",\"epoch\",\"literals\",\"period\",\"ratio\",\"STL\",\"timepoint\"],\"articleSection\":[\"C++\",\"Modern C++\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/\",\"name\":\"Haftal\u0131k C++ 39 - std::chrono - 1 (std::chrono::duration) - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2021-07-23T22:02:29+00:00\",\"dateModified\":\"2021-08-15T20:57:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 39 &#8211; std::chrono &#8211; 1 (std::chrono::duration)\"}]},{\"@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":"Haftal\u0131k C++ 39 - std::chrono - 1 (std::chrono::duration) - 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\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/","og_locale":"tr_TR","og_type":"article","og_title":"Haftal\u0131k C++ 39 - std::chrono - 1 (std::chrono::duration) - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Evet, sevgili yaz\u0131l\u0131mperver dostlar\u0131m, C++ yaz\u0131lar\u0131m\u0131za h\u0131z kesmeden devam ediyoruz (evet h\u0131z\u0131m\u0131z 1-2 ppm [post per month] olsa da). C++ 11 STL k\u00fct\u00fcphanesi ile gelen, \u00f6nceki bir \u00e7ok yaz\u0131mda de\u011findi\u011fim ve muhtemelen C++ 11&#8217;e ili\u015fkin de\u011finece\u011fim son \u00f6nemli kabiliyetlerden biri olan ve uzun s\u00fcredir sizler ile payla\u015fmay\u0131 planlad\u0131\u011f\u0131m std::chrono k\u00fct\u00fcphanesini sayfam\u0131za konuk ediyoruz. Bu sefer... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2021-07-23T22:02:29+00:00","article_modified_time":"2021-08-15T20:57:13+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":"11 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 39 &#8211; std::chrono &#8211; 1 (std::chrono::duration)","datePublished":"2021-07-23T22:02:29+00:00","dateModified":"2021-08-15T20:57:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/"},"wordCount":1570,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["C++ 11","C++ 14","c++ 17","C++ 20","chrono","clock","duration","duration_cast","epoch","literals","period","ratio","STL","timepoint"],"articleSection":["C++","Modern C++","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/","name":"Haftal\u0131k C++ 39 - std::chrono - 1 (std::chrono::duration) - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2021-07-23T22:02:29+00:00","dateModified":"2021-08-15T20:57:13+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/07\/23\/haftalik-c-39-stdchrono-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 39 &#8211; std::chrono &#8211; 1 (std::chrono::duration)"}]},{"@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\/2216","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=2216"}],"version-history":[{"count":9,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2216\/revisions"}],"predecessor-version":[{"id":2268,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2216\/revisions\/2268"}],"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=2216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}