C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- std::chrono::duration
- std::chrono::ceil(std::chrono::duration)
- std::chrono::round(std::chrono::duration)
- std::chrono::abs(std::chrono::duration)
- operator+,-,*,/,%(std::chrono::duration)
- operator==,!=,<,<=,>,>=,<=>(std::chrono::duration)
- std::chrono::duration_cast
- std::chrono::floor(std::chrono::duration)
- std::common_type(std::chrono::duration)
- std::formatter<std::chrono::duration>
- std::chrono::duration<Rep,Period>::operator+=, -=, *=, /=, %=
- std::chrono::operator<< (std::chrono::duration)
- std::chrono::from_stream (std::chrono::duration)
- std::chrono::duration<Rep,Period>::max
- std::chrono::duration<Rep,Period>::operator+(unary), std::chrono::duration<Rep,Period>::operator-(unary)
- std::chrono::duration<Rep,Period>::operator++, std::chrono::duration<Rep,Period>::operator--
- std::chrono::duration<Rep,Period>::zero
- std::chrono::duration<Rep,Period>::min
- std::chrono::duration<Rep,Period>::duration
- std::chrono::duration<Rep,Period>::operator=
- std::chrono::duration<Rep,Period>::count
- std::chrono::clock_cast
- std::chrono::is_am, std::chrono::is_pm, std::chrono::make12, std::chrono::make24
- std::chrono::system_clock
- std::chrono::steady_clock
- std::chrono::high_resolution_clock
- std::chrono::clock_time_conversion
- std::chrono::time_point
- C æ¥æåæ¶é´å·¥å ·
- std::chrono::is_clock
- std::chrono::utc_clock
- std::chrono::tai_clock
- std::chrono::gps_clock
- std::chrono::file_clock
- std::chrono::local_t
- std::chrono::day
- std::chrono::month
- std::chrono::year
- std::chrono::weekday
- std::chrono::operator/ (æ¥å)
- std::chrono::year_month_day
- std::chrono::year_month_day_last
- std::chrono::year_month_weekday
- std::chrono::year_month_weekday_last
- std::chrono::weekday_indexed
- std::chrono::weekday_last
- std::chrono::month_day
- std::chrono::month_day_last
- std::chrono::month_weekday
- std::chrono::month_weekday_last
- std::chrono::year_month
- std::chrono::tzdb
- std::chrono::tzdb_list
- std::chrono::get_tzdb_list, std::chrono::get_tzdb, std::chrono::remote_version, std::chrono::reload_tzdb
- std::chrono::time_zone
- std::chrono::locate_zone
- std::chrono::current_zone
- std::chrono::zoned_time
- std::chrono::time_zone_link
- std::chrono::leap_second
- std::chrono::time_of_day
- std::chrono::last_spec
- std::chrono::treat_as_floating_point
- std::literals::chrono_literals::operator""ns
- std::literals::chrono_literals::operator""y
- std::literals::chrono_literals::operator""d
- std::literals::chrono_literals::operator""s
- std::literals::chrono_literals::operator""ms
- std::literals::chrono_literals::operator""us
- std::literals::chrono_literals::operator""h
- std::literals::chrono_literals::operator""min
- std::chrono::duration_values
- std::chrono::nonexistent_local_time
- std::chrono::ambiguous_local_time
- 注é
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >æ¥æåæ¶é´å·¥å · >std::chrono::duration > std::chrono::duration<Rep,Period>::duration
std::chrono::duration<Rep,Period>::duration
| constexpr duration() = default; |
(1) | (C++11 èµ·) |
| duration( const duration& ) = default; |
(2) | (C++11 èµ·) |
| template< class Rep2 > constexpr explicit duration( const Rep2& r ); |
(3) | (C++11 èµ·) |
| template< class Rep2, class Period2 > constexpr duration( const duration<Rep2,Period2>& d ); |
(4) | (C++11 èµ·) |
仿°ä¸ªå¯éæ°æ®æºä¹ä¸æé æ°ç duration ã
1) é»è®¤æé 彿°è®¾ä¸ºé»è®¤ã
2) å¤å¶æé 彿°è®¾ä¸ºé»è®¤ï¼è¿è¡è®¡æ¬¡æ°çéä½å¤å¶ï¼ã
3) æé æ¥æè®¡æ¬¡
r çæ¶é¿ãæ³¨ææ¤æé 彿°ä»
è¥ const Rep2& ï¼åæ°ç±»åï¼è½éå¼è½¬æ¢ä¸º rep ï¼æ¶é¿ç计次类åï¼ä¸æ»¡è¶³ä¸åæ¡ä»¶æåä¸éè½½å³è®®- std::chrono::treat_as_floating_point<rep>::value 为 true ï¼æ
- std::chrono::treat_as_floating_point<Rep2>::value 为 false ã
ï¼å³ï¼æ¥ææ´æ°è®¡æ¬¡çæ¶é¿ä¸è½ä»æµ®ç¹å¼æé ï¼ä½æ¥ææµ®ç¹è®¡æ¬¡çæ¶é¿è½ä»æ´æ°å¼æé ï¼
4) éè¿è½¬æ¢
d å°ç¡®åç卿å计次æé æ¶é¿ï¼å¦åç¨ std::chrono::duration_cast<duration>(d).count() ã为é¿å
è½¬æ¢æ¶æªæï¼æ¤æé 彿°åä¸éè½½å³è®®ï¼ä»
è¥è½¬æ¢å æ°ç计ç®ï¼ç¨ std::ratio_divide<Period2, Period> ï¼ä¸æº¢åºä¸ï¼- std::chrono::treat_as_floating_point<rep>::value == true
æï¼
- std::ratio_divide<Period2, period>::den == 1 ï¼ä¸
- std::chrono::treat_as_floating_point<Rep2>::value == false ã
ï¼å³è¦ä¹æ¶é¿ä½¿ç¨æµ®ç¹è®¡æ¬¡ï¼è¦ä¹
Period2 è½ä¸ºå¨ææ´é¤ï¼åæ°
| r | - | è®¡æ¬¡æ° |
| d | - | ä»ä¹å¤å¶çæ¶é¿ |
示ä¾
ä¸å代ç å±ç¤ºæ°ä¸ªå¦ä½æé æ¶é¿ç示ä¾ï¼åæ³è ä¸éæ³è ï¼ï¼
è¿è¡æ¤ä»£ç
#include <chrono> int main() { std::chrono::hours h(1); // ä¸å°æ¶ std::chrono::milliseconds ms{3}; // 3 æ¯«ç§ std::chrono::duration<int, std::kilo> ks(3); // 3000 ç§ Â // éè¯¯ï¼ treat_as_floating_point<int>::value == false, // æ¤æ¶é¿åªå è®¸æ´æ°è®¡æ¬¡ // std::chrono::duration<int, std::kilo> d3(3.5);  // 使ç¨å°æ°è®¡æ¬¡ç 30Hz é std::chrono::duration<double, std::ratio<1, 30>> hz30(3.5);  // ä» 3 æ¯«ç§æé 3000 å¾®ç§ std::chrono::microseconds us = ms; // error: 1/1000000 is not divisible by 1/1000 // std::chrono::milliseconds ms2 = us std::chrono::duration<double, std::milli> ms2 = us; // 3.0 å¾®ç§ }
ç¼ºé·æ¥å
ä¸åæ´æ¹è¡ä¸ºçç¼ºé·æ¥å追溯å°åºç¨äºä»¥ååºçç C++ æ åã
| DR | åºç¨äº | åºçæ¶çè¡ä¸º | æ£ç¡®è¡ä¸º |
|---|---|---|---|
| LWG 3050 | C++11 | å¯è½¬æ¢æ§å¶çº¦ä½¿ç¨é const äº¡å¼ | æ¿èä½¿ç¨ const å·¦å¼ |
åé
| èµå¼å
容 (å ¬å¼æå彿°) |