中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

建網(wǎng)站有域名和主機(jī)seo推廣思路

建網(wǎng)站有域名和主機(jī),seo推廣思路,哪個(gè)網(wǎng)站賣(mài)做陽(yáng)具好點(diǎn),網(wǎng)站建設(shè)中企動(dòng)力從現(xiàn)在開(kāi)始,我們開(kāi)始介紹 C 風(fēng)格的時(shí)間處理,在這之前,首先要介紹std::ratio。因?yàn)?C 的 chrono庫(kù)中的時(shí)間段(duration)定義離不開(kāi)std::ratio,不了解std::ratio,就很難理解duration的定義。 1 st…

從現(xiàn)在開(kāi)始,我們開(kāi)始介紹 C++ 風(fēng)格的時(shí)間處理,在這之前,首先要介紹std::ratio。因?yàn)?C++ 的 chrono庫(kù)中的時(shí)間段(duration)定義離不開(kāi)std::ratio,不了解std::ratio,就很難理解duration的定義。

1 std::ratio 的基本意義

? std::ratio 是 C++ 11 引入的數(shù)值計(jì)算庫(kù)的一部分,對(duì)應(yīng)的頭文件是 (如果使用時(shí)間庫(kù),只要包含頭文件就可以了,這個(gè)頭文件內(nèi)部引用了 頭文件)。有資料將其稱(chēng)之為分?jǐn)?shù),其實(shí)它只是提供了比例或比率的概念,并且std::ratio是個(gè)完完全全的泛型庫(kù),它的所有計(jì)算都是在編譯期間完成的,其定義如下:

template<std::intmax_t Num,  std::intmax_t Denom = 1> 
class ratio;

std::intmax_t 表示系統(tǒng)支持的最大位寬的整數(shù),一般 32 位系統(tǒng)中代表的是std::int32_t,在 64 位的系統(tǒng)上代表的是std::int64_tratio類(lèi)還有兩個(gè)靜態(tài)成員,一個(gè)是ratio::num,表示約分后的分子,另一個(gè)是ratio::den,表示約分后的分母??匆幌吕哟a就明了了:

assert((std::ratio<24, 32>::num == 3));
assert((std::ratio<24, 32>::den == 4));
//或者:
std::cout << "std::ratio<24, 32>::num = " << std::ratio<24, 32>::num << std::endl;
std::cout << "std::ratio<24, 32>::den = " << std::ratio<24, 32>::den << std::endl;

由于std::ratio必須在編譯期實(shí)例化的,所以std::ratio類(lèi)的兩個(gè)模板參數(shù)必須都是常量或常量表達(dá)式(constexpr):

int n = 10;
int m = 100;std::ratio<n, m>::num; //ERROR,編譯錯(cuò)誤const int n = 10;
const int m = 100;
std::ratio<n, m>::num; //OK

? std::ratio 是個(gè)類(lèi)模板,實(shí)例化后的std::ratio<24, 32>就是一個(gè)類(lèi)型,可以用這個(gè)類(lèi)型定義變量(內(nèi)部成員 type 與之等效):

std::ratio<3, 4> a;
//std::ratio<24, 32>::type a;  //等效于上一行
assert((a.num == 3));  //注意用了 . 運(yùn)算符,因?yàn)?a 是一個(gè)變量了
assert((a.den == 4));

當(dāng)然,也可以用 using直接使用別名代表一個(gè)比率:

using three_fouth = std::ratio<3, 4>;
assert((three_fouth::num == 3));  //注意用了:: 運(yùn)算符,因?yàn)?three_fouthes 是個(gè) std::ratio<3, 4>類(lèi)型
assert((three_fouth::den == 4));

還有一個(gè)很有意思的現(xiàn)象,就是std::ratio<3, 4>std::ratio<24, 32>被視為同種類(lèi)型,它們的變量可以賦值和交換:

std::ratio<3, 4> a;
std::ratio<24, 32>::type b; b = a; //雖然沒(méi)有意義,但是編譯OK

但是std::ratio<24, 64>與它們就不是同類(lèi):

std::ratio<3, 4> a;
std::ratio<24, 64>::type b; b = a; //ERROR,類(lèi)型不匹配,不能賦值

2 std::ratio 的計(jì)算和比較

? std::ratio還支持比率的加、減、乘、除運(yùn)算,但是也都是在編譯器處理的,std::ratio_add()方法的兩個(gè)模板參數(shù)也必須是std::ratio類(lèi)型,或std::ratio類(lèi)型的別名,但是不能是std::ratio類(lèi)型定義的變量名。以加法的使用方法為例:

using two_third = std::ratio<2, 3>;
using one_sixth = std::ratio<1, 6>;
using sum = std::ratio_add<two_third, one_sixth>;
std::cout << "2/3 + 1/6 = " << sum::num << '/' << sum::den << '\n';

輸出結(jié)果是:

2/3 + 1/6 = 5/6

除了四種基本運(yùn)算,std::ratio還支持大于、大于等于、小于、小于等于、等于和不等于共六個(gè)邏輯運(yùn)算,以下是判斷兩個(gè)比率是否是大于關(guān)系的例子:

//C++ 11 的方式
if (std::ratio_greater<std::ratio<11, 12>, std::ratio<10, 11>>::value) 
{std::cout << "11/12 > 10/11" "\n";
}
//C++ 17 的方式
if constexpr (std::ratio_greater_v<std::ratio<12, 13>, std::ratio<11, 12>>)
{std::cout << "12/13 > 11/12" "\n";
}

這些判斷也都是在編譯期進(jìn)行的,沒(méi)有任何運(yùn)行開(kāi)銷(xiāo),最終運(yùn)行的代碼應(yīng)該是這個(gè)樣子的:

if (true) 
{std::cout << "11/12 > 10/11" "\n";
}

3 std::ratio 的預(yù)定義類(lèi)型

? 為了方便代碼的書(shū)寫(xiě),std::ratio還提供了很多預(yù)定義比率的別名,比如:

std::nano   相當(dāng)于 std::ratio<1, 1000000000>
std::micro 	相當(dāng)于 std::ratio<1, 1000000>
std::milli 	相當(dāng)于 std::ratio<1, 1000>
std::centi 	相當(dāng)于 std::ratio<1, 100>
std::deci 	相當(dāng)于 std::ratio<1, 10>
std::deca 	相當(dāng)于 std::ratio<10, 1>
std::hecto 	相當(dāng)于 std::ratio<100, 1>
std::kilo 	相當(dāng)于 std::ratio<1000, 1>
std::mega 	相當(dāng)于 std::ratio<1000000, 1>
std::giga 	相當(dāng)于 std::ratio<1000000000, 1>

記住這些別名,有利于你看懂別人的代碼,自己寫(xiě)代碼的時(shí)候,也可以少敲幾次鍵盤(pán)。

4 std::ratio 與編譯期計(jì)算

? std::ratio的計(jì)算可以在編譯期完成的,它的設(shè)計(jì)本意不是用來(lái)做分?jǐn)?shù)庫(kù)使用,它更多的體現(xiàn)是不同數(shù)值之間變換的橋梁。只要變換一下比率,就可以讓一個(gè)值表達(dá)完全不同的意義,從這一點(diǎn)來(lái)說(shuō),std::ratio比常量表達(dá)式更具有靈活性。

? 口說(shuō)無(wú)憑,來(lái)看個(gè)例子,那就是本文要介紹的 C++ 時(shí)間庫(kù)中的durationduration表示一段持續(xù)的時(shí)間,是個(gè)時(shí)間跨度,也稱(chēng)為“時(shí)間間隔”。同一個(gè)時(shí)間間隔,可以用秒、毫秒來(lái)衡量,也可以用系統(tǒng)的 ticks 來(lái)衡量,在不同的衡量單位之間轉(zhuǎn)換,需要專(zhuān)門(mén)的計(jì)算。但是來(lái)看看結(jié)合了std::ratio使用的duration是如何做這種轉(zhuǎn)換的呢?來(lái)看個(gè)例子:

using namespace std::chrono;duration<long long, std::micro> micro_dura(5000000);
//duration<double, std::ratio<1, 1000000>> micro_dura(5000000);  //與上面一行代碼等價(jià)auto sec_dura = duration_cast<duration<long long, std::ratio<1, 1>>>(micro_dura);
std::cout << "5000000 microseconds = " << sec_dura.count() << " seconds" << std::endl;

這段代碼定義了一個(gè)單位是微秒的時(shí)間間隔變量,名為micro_dura,并賦值為 5000000 (微秒)。然后用duration_cast將其轉(zhuǎn)換為以秒為單位的時(shí)間間隔sec_dura,其值是 5(sec_dura.count() 就是返回這個(gè)時(shí)間間隔中有多少個(gè)計(jì)數(shù)單位(周期),每個(gè)單位的意義取決于duration周期的定義)。上述代碼是duration_cast是在編譯期間完成的,不占用運(yùn)行時(shí)間。

? 實(shí)際上,C++ 的時(shí)間庫(kù)對(duì)各種時(shí)間間隔都有預(yù)定義的別名,比如上述代碼可以用更簡(jiǎn)單的形式書(shū)寫(xiě):

using namespace std::chrono;microseconds micro_dura(5000000);  //std::chrono::microseconds
auto aaa = duration_cast<seconds>(micro_dura);
std::cout << "5000000 microseconds = " << aaa.count() << " seconds" << std::endl;

再來(lái)看一個(gè)例子,統(tǒng)計(jì)一個(gè) 280 秒的時(shí)間間隔中包含多少個(gè) 70 秒的時(shí)間間隔(周期):

seconds sec(280); //等效于 duration<long long, std::ratio<1, 1>> sec(280);
auto bbb = duration_cast<duration<long long, std::ratio<70, 1>>>(sec);
assert((bbb.count() == 4));

這段代碼中的duration<long long, std::ratio<70, 1>>表示定義了一種時(shí)間間隔類(lèi)型,就是以 70 秒為周期的時(shí)間間隔類(lèi)型。seconds是時(shí)間庫(kù)預(yù)定義的時(shí)間間隔類(lèi)型,單位是秒。

關(guān)注作者的算法專(zhuān)欄
https://blog.csdn.net/orbit/category_10400723.html

關(guān)注作者的出版物《算法的樂(lè)趣(第二版)》
https://www.ituring.com.cn/book/3180

http://www.risenshineclean.com/news/36474.html

相關(guān)文章:

  • 網(wǎng)站開(kāi)發(fā) 避免 字段變化 代碼廣告公司推廣平臺(tái)
  • 濟(jì)南做網(wǎng)站哪里便宜網(wǎng)絡(luò)營(yíng)銷(xiāo)比較成功的企業(yè)
  • 鄄城做網(wǎng)站谷歌商店安卓版下載
  • 企業(yè)網(wǎng)站建設(shè)優(yōu)化做個(gè)小程序需要花多少錢(qián)
  • 網(wǎng)站建設(shè)在哪能看人工智能培訓(xùn)心得體會(huì)
  • 網(wǎng)站建設(shè)gzdlzggseo優(yōu)化技巧有哪些
  • 網(wǎng)站建設(shè)外包公司網(wǎng)站搜索工具
  • 小米路由做網(wǎng)站服務(wù)器代運(yùn)營(yíng)靠譜嗎
  • 簡(jiǎn)單的網(wǎng)站開(kāi)發(fā)購(gòu)物鏈接
  • wordpress webvr網(wǎng)絡(luò)優(yōu)化器
  • 建高鐵站賺錢(qián)嗎百度資源共享鏈接分享組
  • 烏市seo網(wǎng)絡(luò)營(yíng)銷(xiāo)流程網(wǎng)頁(yè)怎么優(yōu)化
  • 那個(gè)視頻網(wǎng)站做公開(kāi)課比較好如何查詢百度搜索關(guān)鍵詞排名
  • 如何做閑置物品自己的網(wǎng)站外鏈工廠
  • 風(fēng)險(xiǎn)網(wǎng)站怎么解決方案軟文廣告經(jīng)典案例800字
  • 網(wǎng)站建設(shè)規(guī)劃ppt模板網(wǎng)站網(wǎng)絡(luò)推廣企業(yè)
  • 無(wú)錫市網(wǎng)站建設(shè)百度公司全稱(chēng)叫什么
  • 大慶市住房與城鄉(xiāng)建設(shè)局網(wǎng)站品牌宣傳文案范文
  • 小白學(xué)做網(wǎng)站買(mǎi)什么書(shū)哪里能搜索引擎優(yōu)化
  • 利用html做博客網(wǎng)站做百度推廣多少錢(qián)
  • 網(wǎng)站建設(shè)方案書(shū) 備案百度排名查詢
  • 網(wǎng)站建設(shè)要考慮哪些企業(yè)如何進(jìn)行網(wǎng)絡(luò)營(yíng)銷(xiāo)
  • 做圖網(wǎng)站有哪些東西嗎建網(wǎng)站用什么軟件
  • 用java做視頻網(wǎng)站app投放渠道有哪些
  • django做的網(wǎng)站舉例資源網(wǎng)站優(yōu)化排名軟件
  • 跨越速運(yùn)在黑龍江黑河網(wǎng)點(diǎn)網(wǎng)絡(luò)優(yōu)化工程師主要做什么
  • 望牛墩做網(wǎng)站每日軍事新聞
  • 廣西中國(guó)建設(shè)銀行網(wǎng)站首頁(yè)百度網(wǎng)站收錄提交
  • 做網(wǎng)站指導(dǎo)seo流量工具
  • 菲律賓 做菠菜網(wǎng)站視頻外鏈在線生成