最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++11中的時(shí)間庫std::chrono(引發(fā)關(guān)于時(shí)間的思考)

 更新時(shí)間:2020年04月14日 10:25:55   作者:AlbertS  
這篇文章主要介紹了C++11中的時(shí)間庫std::chrono(引發(fā)關(guān)于時(shí)間的思考),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

時(shí)間是寶貴的,我們無時(shí)無刻不在和時(shí)間打交道,這個(gè)任務(wù)明天下班前截止,你點(diǎn)的外賣還有5分鐘才能送到,那個(gè)程序已經(jīng)運(yùn)行了整整48個(gè)小時(shí),既然時(shí)間和我們聯(lián)系這么緊密,我們總要定義一些術(shù)語來描述它,像前面說到的明天下班前、5分鐘、48個(gè)小時(shí)都是對(duì)時(shí)間的描述,程序代碼構(gòu)建的程序世界也需要定義一些術(shù)語來描述時(shí)間。

今天要總結(jié)學(xué)習(xí)的是 std::chrono 庫,它是 C++11 標(biāo)準(zhǔn)時(shí)從 boost 庫中引入的,其實(shí)在 C++ 中還有一種 C 語言風(fēng)格的時(shí)間管理體系,像我們常見的函數(shù) time()、clock()localtime()、mktime() 和常見的類型 tm、time_t、clock_t 都是 C 語言風(fēng)格的時(shí)間管理體系。

std::chrono 這個(gè)庫之前接觸的不多,C++20 標(biāo)準(zhǔn)都出了,C++11 引入的這個(gè)庫還沒怎么用過,整天和 time()localtime()、 tm 打交道,最近工作中換了項(xiàng)目,代碼中出現(xiàn)了 std::chrono 的使用,是時(shí)候好好學(xué)習(xí)總結(jié)一下了。

chrono 的概況頭

文件#include <chrono>

命名空間 std::chrono

這個(gè)庫從 C++11 引入標(biāo)準(zhǔn)之后,每個(gè)版本都有所修改,不過核心內(nèi)容變化不是太大,他定義了三種主要類型,分別是 durations、clockstime points,以及圍繞這些類型的一些工具函數(shù)和衍生的定義。

chrono 的核心內(nèi)容duration

這個(gè)模板類用來表示時(shí)間間隔,我們知道時(shí)間的基本單位是秒,這個(gè)類的對(duì)象所表示的時(shí)間間隔也是以秒為單位的,它的定義如下:

template<class Rep, class Period = std::ratio<1>>
class duration;

Rep 表示一種數(shù)值類型,用來描述周期 Period 的數(shù)值類型,比如可以是 int、float 等,而 Period 的類型是 std::ratio,同樣是一個(gè)模板類,實(shí)際表示的是一個(gè)有理數(shù),像100、0、1/1000(千分之一)等等。

std 這個(gè)命名空間下有很多已經(jīng)定義好的有理數(shù),可以舉幾個(gè)常見的頭文件 <ratio> 中的例子:

nano std::ratio<1, 1000000000> // 十億分之一
micro std::ratio<1, 1000000> // 百萬分之一
milli std::ratio<1, 1000>  // 千分之一
centi std::ratio<1, 100>  // 百分之一
deci std::ratio<1, 10>  // 十分之一
deca std::ratio<10, 1>  // 十
hecto std::ratio<100, 1>  // 百
kilo std::ratio<1000, 1>  // 千

比如我們想定義一個(gè)整數(shù)類型的100秒的時(shí)間間隔類型可以使用:

typedef std::chrono::duration<int, std::ratio<100,1>> my_duration_type;

當(dāng)然也可以簡(jiǎn)寫成:

typedef std::chrono::duration<int, std::hecto> my_duration_type;

如果我們想定義一個(gè)整數(shù)類型1分鐘的時(shí)間間隔類型可以寫成:

typedef std::chrono::duration<int, std::ratio<60,1>> my_minute_type;

因?yàn)檫@種時(shí)、分、秒的時(shí)間表示在代碼邏輯中很常用,所有在 std::chrono 命名空間下已經(jīng)定義好了一些時(shí)間間隔類型:

std::chrono::nanoseconds duration</*signed integer type of at least 64 bits*/, std::nano>
std::chrono::microseconds duration</*signed integer type of at least 55 bits*/, std::micro>
std::chrono::milliseconds duration</*signed integer type of at least 45 bits*/, std::milli>
std::chrono::seconds duration</*signed integer type of at least 35 bits*/>
std::chrono::minutes duration</*signed integer type of at least 29 bits*/, std::ratio<60>>
std::chrono::hours  duration</*signed integer type of at least 23 bits*/, std::ratio<3600>>

另外還有一個(gè)很重要的成員函數(shù) count(),用來獲得指定的時(shí)間間隔對(duì)象中包含多少個(gè)時(shí)間周期,接下來可以寫個(gè)例子理解一下,我們用 duration 這個(gè)模板類來表示一下5分鐘和12小時(shí),看看他應(yīng)該怎么使用,對(duì)于5分鐘你可以看成是 5 個(gè) 1 分鐘或者 1 個(gè) 5 分鐘,或者更變態(tài)你可以看成 2.5 個(gè) 2 分鐘,而 12 小時(shí)一般會(huì)看成是 12個(gè) 1 小時(shí),你當(dāng)成 0.5 個(gè) 1 天也是可以的:

#include <chrono>
#include <iostream>
int main()
{
 // 以下為5分鐘表達(dá)
 std::chrono::minutes minute1{5}; // 5個(gè)1分鐘
 std::chrono::duration<int, std::ratio<5*60, 1>> minute2{1}; // 1個(gè)5分鐘
 std::chrono::duration<double, std::ratio<2*60, 1>> minute3{2.5}; // 2.5個(gè)2分鐘

 std::cout << "minutes1 duration has " << minute1.count() << " ticks\n"
  << "minutes2 duration has " << minute2.count() << " ticks\n"
  << "minutes3 duration has " << minute3.count() << " ticks\n";

 // 一下為12小時(shí)表達(dá)
 std::chrono::hours hours1{12}; // 12個(gè)1小時(shí)
 std::chrono::duration<double, std::ratio<60*60*24, 1>> hours2{0.5}; // 0.5個(gè)1天

 std::cout << "hours1 duration has " << hours1.count() << " ticks\n"
  << "hours2 duration has " << hours2.count() << " ticks\n";

 // 使用 std::chrono::duration_cast<T> 將分鐘間隔轉(zhuǎn)化成標(biāo)準(zhǔn)秒間隔
 std::cout << "minutes1 duration has " <<
 std::chrono::duration_cast<std::chrono::seconds>(minute1).count() << " seconds\n";
}

上述代碼中還使用了 std::chrono::duration_cast<T>() 函數(shù),用于各種時(shí)間間隔的換算,運(yùn)行結(jié)果如下:

minutes1 duration has 5 ticks
minutes2 duration has 1 ticks
minutes3 duration has 2.5 ticks
hours1 duration has 12 ticks
hours2 duration has 0.5 ticks
minutes1 duration has 300 seconds

clock

從名字可以看出這個(gè)類叫做時(shí)鐘,時(shí)鐘是用來看時(shí)間和計(jì)時(shí)的,常用的兩個(gè)類是 system_clocksteady_clock,在 C++20 標(biāo)準(zhǔn)中又加入了多種內(nèi)容,現(xiàn)在我們先來看看這兩個(gè)常用類。

從這一部分開始類的定義讓人有些迷糊,其實(shí) clock 引用了 std::chrono::duration 和后面要說的 std::chrono::time_point, 而 std::chrono::time_point 又引用了 std::chrono::duration 和現(xiàn)在要講的 std::chrono::system_clockstd::chrono::steady_clock,如果只看定義很容易被繞暈,所以還是先做個(gè)練習(xí)實(shí)驗(yàn)一下。

system_clock

這個(gè)類被稱為系統(tǒng)內(nèi)時(shí)鐘,當(dāng)修改系統(tǒng)時(shí)鐘時(shí)可能會(huì)改變其單調(diào)遞增的性質(zhì),靜態(tài)成員函數(shù)有 now()、to_time_t()from_time_t() 三個(gè),關(guān)于它的單調(diào)性被修改舉個(gè)例子,一般認(rèn)為時(shí)間一直是遞增的,但是當(dāng)你現(xiàn)在調(diào)用一次函數(shù) now(),然后把時(shí)間往過去調(diào)1天,然后再調(diào)用 now() 函數(shù),就會(huì)發(fā)現(xiàn)新得到的時(shí)間“變小”了。

也因?yàn)檫@樣它會(huì)受到 NTP(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議)的影響,但是不會(huì)受時(shí)區(qū)和夏令時(shí)的影響(其實(shí)很多國家早就廢除夏令時(shí)了)。

下面寫個(gè)例子練習(xí)一下,例子中使用了 now()to_time_t()、from_time_t() 三個(gè)函數(shù),不清楚的時(shí)候可以對(duì)照一下:

#include <chrono>
#include <iostream>
int main()
{
 std::chrono::duration<int, std::ratio<60*60*24> > one_day(1);

 // 根據(jù)時(shí)鐘得到現(xiàn)在時(shí)間
 std::chrono::system_clock::time_point today = std::chrono::system_clock::now();
 std::time_t time_t_today = std::chrono::system_clock::to_time_t(today);
 std::cout << "now time stamp is " << time_t_today << std::endl;
 std::cout << "now time is " << ctime(&time_t_today) << std::endl;


 // 看看明天的時(shí)間
 std::chrono::system_clock::time_point tomorrow = today + one_day;
 std::time_t time_t_tomorrow = std::chrono::system_clock::to_time_t(tomorrow);
 std::cout << "tomorrow time stamp is " << time_t_tomorrow << std::endl;
 std::cout << "tomorrow time is " << ctime(&time_t_tomorrow) << std::endl;


 // 計(jì)算下個(gè)小時(shí)時(shí)間
 std::chrono::system_clock::time_point next_hour = today + std::chrono::hours(1);
 std::time_t time_t_next_hour = std::chrono::system_clock::to_time_t(next_hour);
 std::chrono::system_clock::time_point next_hour2 = std::chrono::system_clock::from_time_t(time_t_next_hour);

 std::time_t time_t_next_hour2 = std::chrono::system_clock::to_time_t(next_hour2);
 std::cout << "tomorrow time stamp is " << time_t_next_hour2 << std::endl;
 std::cout << "tomorrow time is " << ctime(&time_t_next_hour2) << std::endl;

 return 0;
}

運(yùn)行結(jié)果如下:

now time stamp is 1586662332
now time is Sun Apr 12 11:32:12 2020

tomorrow time stamp is 1586748732
tomorrow time is Mon Apr 13 11:32:12 2020

tomorrow time stamp is 1586665932
tomorrow time is Sun Apr 12 12:32:12 2020

steady_clock

這是一個(gè)單調(diào)時(shí)鐘,一旦啟動(dòng)之后就與系統(tǒng)時(shí)間沒有關(guān)系了,完全根據(jù)物理是時(shí)間向前移動(dòng),成員函數(shù)只有一個(gè) now(),通??梢杂脕碛?jì)時(shí),使用方法與 system_clock 相比簡(jiǎn)單許多,下面寫個(gè)小例子。

#include <chrono>
#include <iostream>
int main()
{
 // 先記錄程序運(yùn)行時(shí)間
 std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();

 volatile int nDstVal, nSrcVal;
 for (int i = 0; i < 1000000000; ++i)
 nDstVal = nSrcVal;

 // 做差值計(jì)算耗時(shí)
 std::chrono::duration<double> duration_cost = std::chrono::duration_cast<
 std::chrono::duration<double> >(std::chrono::steady_clock::now() - start);
 std::cout << "total cost " << duration_cost.count() << " seconds." << std::endl;

 return 0;
}

運(yùn)行結(jié)果如下:

total cost 1.9424 seconds.

time point

這個(gè)類與 duration 類似,同樣是模板類,表示具體的時(shí)間點(diǎn),比如今天 18:00 開飯,明天上午 10:00 發(fā)版本,今年 5 月 1 日可能因?yàn)橐咔椴蛔尦鋈ネ媪?,像這些具體的時(shí)間點(diǎn)可以使用 std::chrono::time_point 來表達(dá),它的定義如下:

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

首先這個(gè)類是在 std::chrono 這個(gè)命名空間下,但是你會(huì)經(jīng)??吹揭韵逻@種寫法:

std::chrono::system_clock::time_point today = std::chrono::system_clock::now();
std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();

好像 time_point 又在 std::chrono::system_clockstd::chrono::steady_clock 范圍內(nèi),實(shí)際上這兩個(gè)范圍內(nèi)的 time_point 引用的是 std::chrono::time point,看看 std::chrono::system_clock 的定義能明白一些。

class system_clock {
public:
 using rep = /*see description*/ ;
 using period = ratio</*unspecified*/, /*unspecified*/ >;
 using duration = chrono::duration<rep, period>;
 using time_point = chrono::time_point<system_clock>;
 static constexpr bool is_steady = /*unspecified*/ ;
 static time_point now() noexcept;
 // Map to C API
 static time_t to_time_t (const time_point& t) noexcept;
 static time_point from_time_t(time_t t) noexcept;
};

對(duì)照上面的定義可以知道,std::chrono::system_clock::time_point 實(shí)際上 std::chrono::time_point<system_clock>,這幾個(gè)時(shí)間類的定義相互引用,看到這一部分的時(shí)候一定不要煩躁,一步步推導(dǎo)分析其中的關(guān)系。

time_point 這個(gè)類有一個(gè)成員函數(shù) time_since_epoch() 用來獲得 1970-01-01 00:00:00time_point 時(shí)間經(jīng)過的 duration, 返回的 duration 的單位取決于 timepoint 定義時(shí)的 duraion 的單位,不過你也可以得到 duration 之后使用 std::chrono::duration_cast<T>() 函數(shù)來轉(zhuǎn)化。

#include <chrono>
#include <iostream>
int main()
{
 // 獲得epoch 和 now 的時(shí)間點(diǎn)
 std::chrono::time_point<std::chrono::system_clock> epoch =
 std::chrono::time_point<std::chrono::system_clock>{};
 std::chrono::time_point<std::chrono::system_clock> now =
 std::chrono::system_clock::now();

 // 顯示時(shí)間點(diǎn)對(duì)應(yīng)的日期和時(shí)間
 time_t epoch_time = std::chrono::system_clock::to_time_t(epoch);
 std::cout << "epoch: " << std::ctime(&epoch_time);
 time_t today_time = std::chrono::system_clock::to_time_t(now);
 std::cout << "today: " << std::ctime(&today_time);

 // 顯示duration的值
 std::cout << "seconds since epoch: "
 << std::chrono::duration_cast<std::chrono::seconds>(epoch.time_since_epoch()).count()
 << std::endl;

 std::cout << "today, ticks since epoch: "
 << now.time_since_epoch().count()
 << std::endl;

 std::cout << "today, hours since epoch: "
 << std::chrono::duration_cast<std::chrono::hours>(now.time_since_epoch()).count()
 << std::endl;

 return 0;
}

運(yùn)行結(jié)果如下:

epoch: Thu Jan  1 08:00:00 1970
today: Sun Apr 12 12:30:04 2020
seconds since epoch: 0
today, ticks since epoch: 1586665804624992500
today, hours since epoch: 440740

從運(yùn)行結(jié)果來看,epoch 的時(shí)間點(diǎn)是 Thu Jan 1 08:00:00 1970,為什么不是 1970-01-01 00:00:00 呢?那是因?yàn)槲覀冊(cè)跂|8區(qū),格林威治時(shí)間為
1970-01-01 00:00:00 的時(shí)候,我們的時(shí)間就是 Thu Jan 1 08:00:00 1970,這樣看來 std::ctime() 這個(gè)函數(shù)考慮了時(shí)區(qū)的影響,相同的代碼如果在韓國同時(shí)運(yùn)行得到的可能就是 epoch: Thu Jan 1 09:00:00 1970。

關(guān)于時(shí)間的思考

思考一個(gè)問題,時(shí)間是不是一種不變的量,或者換一種說法,它是不是一種均勻的量。如果了解過《三體》中的部分章節(jié),你就會(huì)發(fā)現(xiàn)時(shí)間總在被任意改變著。但是在現(xiàn)實(shí)生活中好像時(shí)間就是一個(gè)標(biāo)準(zhǔn),我們認(rèn)為它是一成不變的,總是感覺今天的1天和昨天的24小時(shí)在時(shí)間上是等同的,今年的這一年和去年的365天是等同的,但其實(shí)你了解一下閏年、閏秒、夏令時(shí)就會(huì)發(fā)現(xiàn),前面提到的這些未必等同。

日常生活中對(duì)時(shí)間的描述只是為了理解和闡明一些事物,我們把太陽升到頭頂叫做中午,把地球自轉(zhuǎn)一圈叫做一天24小時(shí),把地球圍繞太陽公轉(zhuǎn)一圈叫做1年365天,但是地球自轉(zhuǎn)不是那么均勻的,也就是說每轉(zhuǎn)一圈占用的絕對(duì)時(shí)間是不一樣的,我們現(xiàn)在使用的時(shí)鐘通常是滴答滴答一秒秒的走著,如果地球自轉(zhuǎn)一圈的時(shí)間不是完全相同的,那么建立在這個(gè)滴答上的一切時(shí)間都是不準(zhǔn)確的。

什么是建立在滴答滴答上的時(shí)間,我們以滴答一次作為1秒來計(jì)算,那么1分鐘是60秒,也就是滴答60次,1小時(shí)是60分鐘,滴答3600次,一天是24小時(shí),滴答86400次,滴答的次數(shù)是均勻的,但是自轉(zhuǎn)和公轉(zhuǎn)是不均勻的,那么兩個(gè)時(shí)間就對(duì)不上了,所以出現(xiàn)了閏秒、閏年等方法來調(diào)整時(shí)間,使得我們用來描述生活的時(shí)間和周圍的環(huán)境現(xiàn)象可以一致,不然大約幾千年以后就會(huì)出現(xiàn)中午12點(diǎn)天上出現(xiàn)月亮的奇觀,那時(shí)的人們?cè)谑窌袝?huì)發(fā)現(xiàn)我們這個(gè)時(shí)代中午12點(diǎn)掛在天上的是太陽,簡(jiǎn)直太玄幻。

有沒有一種計(jì)時(shí)可以描述這種不均勻的自轉(zhuǎn)呢?其實(shí)我們偉大的古人早已經(jīng)發(fā)明出來了,你一定聽說過日晷這種計(jì)時(shí)工具,它是觀測(cè)日影記時(shí)的儀器,主要是根據(jù)日影的在日晷面上的位置,以指定當(dāng)時(shí)的時(shí)辰或刻數(shù),是我國古代較為普遍使用的計(jì)時(shí)儀器。為什么它沒有時(shí)間不一致的問題?因?yàn)樗旧砭褪遣痪鶆虻?,它是根?jù)自然現(xiàn)象來規(guī)定生活中每天的時(shí)間的,其實(shí)對(duì)照現(xiàn)在來說就是每個(gè)時(shí)辰的滴答數(shù)實(shí)際上是不一樣的。

日晷這種不均勻的計(jì)時(shí)其實(shí)是為了適應(yīng)天文現(xiàn)象,方便人們的生產(chǎn)生活,所以說現(xiàn)在地球自轉(zhuǎn)一圈是一天,但不一定是86400秒,地球公轉(zhuǎn)一圈是一年,但不一定是365天,后來人們使用電子設(shè)備計(jì)時(shí),按道理來說應(yīng)該非常準(zhǔn)確,但是因?yàn)榈厍蜃赞D(zhuǎn)、公轉(zhuǎn)的速率都不穩(wěn)定,這種差距漸漸地會(huì)給生活帶來困擾,于是又發(fā)明了一個(gè)折中的協(xié)調(diào)世界時(shí),會(huì)在適當(dāng)?shù)臅r(shí)候閏秒、閏天,以彌補(bǔ)這種差距。假如你買了一個(gè)絕對(duì)精準(zhǔn)的不聯(lián)網(wǎng)的電子計(jì)時(shí)器,但是幾年之后你就會(huì)發(fā)現(xiàn)你的計(jì)時(shí)器肯定和大家使用的標(biāo)準(zhǔn)時(shí)間不一致了。

其實(shí)還有一種基于特定銫原子的振蕩周期來確定的國際原子時(shí),主要是在時(shí)間精度要求較高的航天、通訊、電子等領(lǐng)域,為了保持系統(tǒng)的連續(xù)性而使用的,在日常生活中基本不會(huì)使用,但是這個(gè)時(shí)間是相對(duì)恒定的,不會(huì)去計(jì)較天文現(xiàn)象,每一秒都“準(zhǔn)確”的流逝著。

時(shí)間函數(shù)思考

現(xiàn)在回過頭來再來看這些時(shí)間函數(shù),是不是感覺有點(diǎn)不一樣了,比如 time(NULL) 這個(gè)函數(shù),它返回的是從 1970-01-01 00:00:00 到現(xiàn)在時(shí)間的秒數(shù),回憶一下上面關(guān)于時(shí)間的思考,這個(gè)秒數(shù)真的是準(zhǔn)確的嗎?其實(shí)你如果理解了上面的內(nèi)容就能得出結(jié)論,它肯定和國際原子時(shí)是有出入的。

再考慮下閏秒的影響,假如你實(shí)現(xiàn)了一個(gè)函數(shù),第一次執(zhí)行是在0點(diǎn)執(zhí)行,執(zhí)行之后你設(shè)置了一個(gè)86400秒的倒計(jì)時(shí),也就是1天的時(shí)間,到第二天0點(diǎn)的時(shí)候正好又執(zhí)行,你又設(shè)置了一個(gè)86400秒的倒計(jì)時(shí),但今天正好是閏秒的日子,也就是今天會(huì)比昨天多1秒,那么今天的時(shí)間到23:59:59的時(shí)候就經(jīng)過了86400秒,也就是說在23:59:59的時(shí)候就會(huì)執(zhí)行你寫的函數(shù),如果碰到秒殺就尷尬了…

一般的程序開發(fā)不用太考慮閏秒的影響,但是如果這一秒的誤差出現(xiàn)的宇宙飛船的飛行中,可能會(huì)導(dǎo)致幾十公里的誤差,所以程序員們一定要理解閏秒的可能帶來的問題,評(píng)估自己所寫的代碼需不需要處理這種情況。曾經(jīng)的一次閏秒直接導(dǎo)致了芬蘭航空系統(tǒng)的癱瘓,所以一些大型項(xiàng)目還是會(huì)提前很長時(shí)間就把即將到來的閏秒處理寫入到自己的系統(tǒng)中,以應(yīng)對(duì)它帶來的危險(xiǎn)。

當(dāng)你認(rèn)為時(shí)間不會(huì)倒流的時(shí)候,它確實(shí)就發(fā)生了。我們一般假定時(shí)間不會(huì)倒流,但是如果你過分依賴這個(gè)特性,可能就會(huì)導(dǎo)致一些問題,這種情況常常出現(xiàn)設(shè)定了自動(dòng)校準(zhǔn)時(shí)間的電腦上,電腦的時(shí)間走快了,然后到達(dá)一定的差距后會(huì)觸發(fā)校準(zhǔn)程序,這時(shí)就會(huì)出現(xiàn)“時(shí)間倒流”的現(xiàn)象,比如 time(NULL) 這種依賴于電腦時(shí)間的函數(shù),在這種情況下函數(shù)返回值就會(huì)變小,出現(xiàn)不單調(diào)性。

總結(jié)關(guān)于時(shí)間的操作真的太多了,我居然發(fā)現(xiàn)一種名為 operator""h 的操作符,與數(shù)字連用表示小時(shí),有興趣的話可以自己擴(kuò)展學(xué)習(xí)一下。durations、clockstime points 三種有關(guān)時(shí)間操作的定義相互之間是有引用的,需要理清其中的關(guān)系。需要了解閏秒、閏年、天文時(shí)、原子時(shí)、協(xié)調(diào)時(shí)產(chǎn)生的原因,這樣就可以做到熟悉原理,心里不慌。在測(cè)試的例子中出現(xiàn)了時(shí)區(qū)的概念,其實(shí)是人們?yōu)榱松a(chǎn)生活主動(dòng)創(chuàng)造出來以適應(yīng)自然現(xiàn)象的。這里拋出一個(gè)疑問,我之前剛接觸時(shí)暈乎了很久,后來漸漸才明白,有些時(shí)間函數(shù)的說明中會(huì)提到與時(shí)區(qū)無關(guān),比如 time(NULL)、還有今天學(xué)習(xí)的 system_clock,但是當(dāng)我修改電腦時(shí)區(qū)的時(shí)候會(huì)發(fā)現(xiàn),這些函數(shù)的返回值會(huì)發(fā)生突變,大家有探究過其中的原因嗎?

我們都是追逐時(shí)間奔跑的螻蟻,改變世界的同時(shí)也被時(shí)間改變著。

總結(jié)

到此這篇關(guān)于C++11中的時(shí)間庫std::chrono(引發(fā)關(guān)于時(shí)間的思考)的文章就介紹到這了,更多相關(guān)C++11 時(shí)間庫 std::chrono 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ random_shuffle()方法案例詳解

    C++ random_shuffle()方法案例詳解

    這篇文章主要介紹了C++ random_shuffle()方法案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言庫函數(shù)中qsort()的用法

    C語言庫函數(shù)中qsort()的用法

    大家好,本篇文章主要講的是C語言庫函數(shù)中qsort()的用法,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言項(xiàng)目全正整數(shù)后再計(jì)算的三種參考解答方法

    C語言項(xiàng)目全正整數(shù)后再計(jì)算的三種參考解答方法

    今天小編就為大家分享一篇關(guān)于C語言項(xiàng)目全正整數(shù)后再計(jì)算的三種參考解答方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • C語言解決青蛙跳臺(tái)階問題(升級(jí)版)

    C語言解決青蛙跳臺(tái)階問題(升級(jí)版)

    所謂的青蛙跳臺(tái)階問題,就是指一只青蛙一次可以跳上1級(jí)臺(tái)階,也可以跳上2級(jí)。求該青蛙跳上一個(gè)n級(jí)的臺(tái)階總共有多少種跳法。本文將用C語言解決這一問題,需要的可以參考一下
    2022-01-01
  • C語言左旋字符串的三種實(shí)現(xiàn)方式

    C語言左旋字符串的三種實(shí)現(xiàn)方式

    本文章將使用三種思路實(shí)現(xiàn)字符串的左旋(循環(huán)移動(dòng),截取和拼接,逆序反轉(zhuǎn)),文中通過代碼示例和圖文介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-03-03
  • C++實(shí)現(xiàn)圖的鄰接矩陣表示

    C++實(shí)現(xiàn)圖的鄰接矩陣表示

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)圖的鄰接矩陣表示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++11 lambda表達(dá)式在回調(diào)函數(shù)中的使用方式

    C++11 lambda表達(dá)式在回調(diào)函數(shù)中的使用方式

    這篇文章主要介紹了C++11 lambda表達(dá)式在回調(diào)函數(shù)中的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++迷宮的實(shí)現(xiàn)代碼

    C++迷宮的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)迷宮游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 巧妙使用RAII中的ScopeExit

    巧妙使用RAII中的ScopeExit

    Resource Acquisition Is Initialization,資源獲取即初始化,將資源的生命周期與一個(gè)對(duì)象的生命周期綁定,這篇文章主要介紹了巧妙使用RAII中的ScopeExit,需要的朋友可以參考下
    2021-05-05
  • TypeScript的函數(shù)定義與使用案例教程

    TypeScript的函數(shù)定義與使用案例教程

    這篇文章主要介紹了TypeScript的函數(shù)定義與使用案例教程,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論

克拉玛依市| 白沙| 南江县| 通渭县| 阿尔山市| 疏勒县| 屏山县| 静宁县| 邳州市| 呼伦贝尔市| 团风县| 增城市| 古田县| 太原市| 从江县| 扶沟县| 兰西县| 巴林左旗| 三都| 西林县| 南召县| 乌拉特前旗| 瑞安市| 西藏| 遂溪县| 全南县| 道真| 临颍县| 留坝县| 张家界市| 沁阳市| 陕西省| 铁力市| 长顺县| 昌平区| 玉山县| 射洪县| 博乐市| 神池县| 象山县| 民县|