C ++ 20'de zaman: Temel Terminoloji Krono zaman ve zamanla

Adanali

Active member
C ++ 20'de zaman: Temel Terminoloji Krono zaman ve zamanla


  1. C ++ 20'de zaman: Temel Terminoloji Krono zaman ve zamanla

Zaman dilimi fonksiyonu (C ++ 20), esasen takvimin (C ++ 20) işlevselliğine dayanır, bu da chono fonksiyonuna (C ++ 11) dayanır. Son yazıdaki Chrono Temel Terminolojisine genel bir bakıştan sonra, C ++ 20'de yeni veri türleri sunuyorum.










Süre


C ++ 14'te, gibi veri türleri std::chrono::seconds Zaman ve karşılık gelen zaman değişkenleri için 5s tanıtıldı. C ++ 20 Yeni veri türleri eklendi. Aşağıdaki tablo bütünlük için her şeyi göstermektedir.








Genellikle zamanın süresi std::chrono::days Ve takvimin tarihi std::chrono::day kafası karışmış. Aynı şey zaman süresi için de geçerli std::chrono::years Ve takvimin tarihi std::chrono::year.








Rainer Grimm yıllardır yazılım mimarı, ekip ve eğitim müdürü olarak çalıştı. C ++ programlama dilleri, Python ve Haskell hakkında makaleler yazmayı seviyor, ancak uzman konferanslarla konuşmayı da seviyor. Modern C ++ blogunda, C ++ tutkusuyla yoğun bir şekilde ilgileniyor.







Zaman süresi arasındaki farklılıklar std::chrono::days,, std::chrono::years ve takvim türleri std::chrono::day, std::chrono::year




C ++ 20'de, yeni takvim türleri için iki yeni litre std::chrono::day VE std::chrono::yeaR eklendi. Gerçek d VE y Biriyle ilgili std::chrono::day VE std::chrono::year.








  • Günlük değişken, ayın bir günü içindir ve bölgenin dışında bulunursa belirtilmez [0, 255] yalan.
  • Yıllık değişmez, bir yıl boyunca Gregoryen takviminde ve bölgenin dışında bulunuyorsa belirtilmiyor [-32767, 32767] yalan.
Aşağıdaki program arasındaki farkı göstermektedir. std::chrono::days VE std::chrono::day ve sonuç olarak std::chrono::years VE std::chrono::year.


// dayDays.cpp

#include <iostream>&#13;
#include <chrono>&#13;
&#13;
int main() {&#13;
&#13;
std::cout << 'n';&#13;
&#13;
using namespace std::chrono_literals; &#13;
&#13;
std::chrono::days days1 &#13;
= std::chrono::day(30) - std::chrono::day(25); // (1)&#13;
std::chrono::days days2 = 30d - 25d; // (3)&#13;
if ( days1 == days2 && &#13;
days1 == std::chrono::days(5)) std::cout << "Five daysn";&#13;
&#13;
std::chrono::years years1 &#13;
= std::chrono::year(2021) - std::chrono::year(1998); // (2)&#13;
std::chrono::years years2= 2021y - 1998y; // (4)&#13;
if ( years1 == years2 && &#13;
years1 == std::chrono::years(23)) &#13;
std::cout << "Twenty-three yearsn";&#13;
&#13;
std::cout << 'n';&#13;
&#13;
}&#13;



Türün iki nesnesi std::chrono::day Çıkarılmış (1), türden bir nesne alır std::chrono::days. Aynı şey bunun için de geçerlidir std::chrono::year (2) e std::chrono::years. Sayesinde using-Alan Alanı ile İzin std::chrono_literals Kelimenin tam anlamıyla zamanlayabilirim std::chrono::day VE std::chrono::year Doğrudan belirtin (3 ve 4).

Firma kurmak


Değişiklikleri sonuçlandırmanın çeşitli yolları vardır.

  • using namespace std::literals: Tüm C ++ literallerini içerir,
  • using namespace std::chrono: isimlerin tüm alanını kapatır std::chrono A,
  • using namespace std::chrono_literals: Tüm zamanların tüm gerçeklerini içerir e e
  • using namespace std::literals::chrono_literals: Tüm zamanların gerçeklerini içerir.
Program literals.cpp Farklı kullanımını gösterir using-Clarasyonlar.


// literals.cpp&#13;
&#13;
#include <chrono>&#13;
#include <string>&#13;
&#13;
int main() {&#13;
&#13;
{&#13;
using namespace std::literals;&#13;
&#13;
std::string cppString = "C++ string literal"s; // (1)&#13;
auto aMinute = 60s; // (2)&#13;
// duration aHour = 0.25h + 15min + 1800s;&#13;
}&#13;
&#13;
{&#13;
using namespace std::chrono;&#13;
&#13;
// std::string cppString = "C++ string literal"s;&#13;
auto aMinute = 60s;&#13;
duration aHour = 0.25h + 15min + 1800s; // (3)&#13;
}&#13;
&#13;
{&#13;
using namespace std::chrono_literals;&#13;
&#13;
// std::string cppString = "C++ String literal"s;&#13;
auto aMinute = 60s;&#13;
// duration aHour = 0.25h + 15min + 1800s;&#13;
}&#13;
&#13;
}


İsimlerin odasındaki bildirimler std::literals Literal String gibi tüm dahil edilen değişmezleri etkinleştirin ("C++ String-Literal "s 1) veya gerçek zaman (60s 2. satırda). std::chrono::duration Kalifiksiz kullanılamaz. Aksine, bildirim kullanıyor using namespace std::chrono gerçek zaman ve veri türüne izin verir std::chrono::duration (3) Çıkarılmaz: duration aHour = 0.25h + 15min + 1800s. Sayesinde using-Bilat using namespace::std::chrono::literals Tüm kelimeler mevcuttur.

zaman


Saat ve zaman süresine ek olarak, üçüncü temel tip C ++ 11'deydi std::chrono::time_point.


template<typename Clock, &#13;
typename Duration = typename Clock::duration> &#13;
class time_point;


A std::chrono::time_point Saate ve zamanın süresine bağlıdır. C ++ 20 ek zamanlar için aka sunar.








Ecxeption ile std::chrono::steady_clock Belirtilen süre boyunca bir zaman tanımlamak mümkündür. Saat dışındaki herkesle std::chrono::file_clock Bunları birkaç saniye belirtebilirsiniz. İle std::chrono::local_t VE std::chrono::system_clock Onları günlerce de ayarlayabilirsiniz.

Sırada ne var?


std::chrono::hh_mm_ss Hava, gece yarısı saniyelik saatler, dakikalar, saniye ve kesirlere ayrıldı. C ++ 20'deki bu yeni veri türü günün saati içindir.


(RME)
 
Üst