版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
多個(gè)不同線(xiàn)程在同一個(gè)智能指針上執(zhí)行原子操作(atomic_load等)是安全的多個(gè)不同線(xiàn)程根據(jù)同一個(gè)智能指針創(chuàng)建新的智能指針(增加計(jì)數(shù))是安全的其他操作潛在是不安全的,特別是在不同的線(xiàn)程對(duì)同一個(gè)智能指針執(zhí)行reset等修改操3為什么smart_ptr::operator對(duì)左值和右值都有效,而且不需要對(duì)等號(hào)兩邊是否答:我們使用值類(lèi)型而非類(lèi)型作為形參,這樣實(shí)參會(huì)被移動(dòng)(右值的情況)(左值的情況),不可能和*this同一個(gè)對(duì)象4為什么stack(或queue)的pop函數(shù)返回類(lèi)void,而不是直接返回容器的top(或front)成員?答:這是C++98里、還沒(méi)有移動(dòng)語(yǔ)義時(shí)的設(shè)計(jì)。如果pop返回元素,而元素拷貝時(shí)發(fā)生異常的話(huà),那這個(gè)元素就丟失了。因而容器設(shè)計(jì)成有分離的top(或front)和pop成員有一種可能的設(shè)計(jì)是把接口改成voidpop(T&),這增T必須支持默認(rèn)構(gòu)造和賦值的要求,在單線(xiàn)程為主的年代沒(méi)有明顯的好處,反而帶來(lái)了對(duì)T的額外要求。5為什么大部分容器都提供了begin、end等方答:容器提供了beginend方法,就意味著是可以迭代(遍歷)的。大部分容器都可以為什么容器沒(méi)有繼承一個(gè)公用的基答:C++是面向?qū)ο蟮恼Z(yǔ)言,尤其在標(biāo)準(zhǔn)容器的設(shè)計(jì)上主要使用值語(yǔ)義,使用公共基類(lèi)7目前這個(gè)輸入行迭代器的行為,在什么情況下可能導(dǎo)致意料之外的答it!=reader.end();++it)cout<<*it<<16}以上代碼,因?yàn)閎egin多調(diào)用了一次,輸出就少了一答:很。比如,文件如果為空的話(huà),從迭代器的行為角度,begin()應(yīng)該等于10這講里我們沒(méi)有深入討論賦值;請(qǐng)你思考一下,如果例子里改成賦值,會(huì)有什么樣的變vector尾部追加數(shù)據(jù),盡量對(duì)變量進(jìn)行賦值、不后續(xù)修改。這樣的代碼更容易推11為什么說(shuō)UTF-32處理會(huì)比較簡(jiǎn)單答:UTF-32,一個(gè)字符就是一個(gè)基本的處理單位,一般不會(huì)出現(xiàn)一個(gè)字符跨多個(gè)處理單位的情況(UTF-8和UTF-16下會(huì)發(fā)生)。你知道什么情況下UTF-32也并不那么簡(jiǎn)單Unicode下有所謂的修飾字符,用來(lái)修飾前一個(gè)字符。按UnicodeUTF-2下也不可以在任意單位處粗暴斷開(kāi)處理。哪種UTF編碼方式空間效率比較高答:視的內(nèi)容而定比如,如果內(nèi)容以ASCII為主(如源代碼),那UTF-8效率最高。如果內(nèi)容以一般的中文文本為主,那UTF-16效率最高。12為什么并非所有的語(yǔ)言都支持這些不同的多Python例,它是動(dòng)態(tài)類(lèi)型的語(yǔ)言。所以它不會(huì)有真正的靜態(tài)多態(tài)。但和靜態(tài)類(lèi)型的面向?qū)ο笳Z(yǔ)言(如Java)不同,它的運(yùn)行期多態(tài)不需要繼承。沒(méi)有參數(shù)化多態(tài)初看是個(gè)缺陷,但Python動(dòng)態(tài)參數(shù)系統(tǒng)允許默認(rèn)參數(shù)和可變參數(shù),并沒(méi)有什么參數(shù)化多態(tài)能做得到而Python做不到的事。17想,你如何可以實(shí)現(xiàn)一個(gè)惰性的過(guò)濾器答代1#include 23usingnamespace4 te<typenameI,typenameclassfilter_viewclass tortypedeftypename I>::value_typetypename I>::pointertypename I>::referencetypedef tor(Icurrent,Iend,F:,, if(current_!=end_!cond_(*current_)) tor&{while(current_!=end_)if{}}return} tor{autotemp=return}referenceoperator*(){return}pointeroperator->(){return}booloperator==(const {returncurrent_==}booloperator!=(const tor&{return}IIFfilter_view(Ibegin,IF:,, torbegin(){return tor(begin_,end_,} torend() return tor(end_,end_, Ibegin_;IIbegin_;Iend_;Fcond_;我展示了compose帶一個(gè)或參數(shù)的情況。你覺(jué)得compose不帶任何參數(shù)該如何定答代代inlineauto{return[](auto&&x)->{return 7這個(gè)函數(shù)把參數(shù)原封不動(dòng)地傳回。它的意義相當(dāng)于加法里的0,乘法里的1在普通的加法里,你可能不太需要0;但在一個(gè)做加法的地方,如果別人想告訴你不要做任何操作,傳給你一個(gè)0是最簡(jiǎn)單的做法。有沒(méi)有可能不用index_sequence來(lái)初始化bit_count?如果行,應(yīng)該如何實(shí)現(xiàn)答:似乎沒(méi)有通用的辦法,因?yàn)槟壳癱onstexpr要求在構(gòu)造時(shí)直接初始化對(duì)象的內(nèi)但是C++20,允許constexpr象里存在平凡默認(rèn)構(gòu)造的成員之后,就可以使用下代代12te<size_tstructbit_count_tconstexprconstexpr{for(autoi=0U;i<N;{count[i]=}}unsignedchar3456789constexprconstexpr{for(autoi=0U;i<N;{count[i]=}}unsignedchar3456789作為一個(gè),你能自行實(shí)現(xiàn)出make_integer_sequence嗎答代代123456789te<classT,T...structinteger_sequencete<classstruct{te<TN,T...structinteger_sequence_helper{usingtype=typenameinteger_sequence_helper<N-1,N-1,te<T...structinteger_sequence_helper<0,Ints...>{usingtype=integer_sequence<T,Ints...>;te<classT,Tusingmake_integer_sequencetypenamete如果一開(kāi)始寫(xiě)成tem te<classT,TN,T...Ints>structinteger_sequence_helper的話(huà),就會(huì)遇到錯(cuò)誤“non-typetemteargumentspecializesatemteparameterwithdependenttype‘T’”(非類(lèi)型的模板實(shí)參特化了一個(gè)使用依賴(lài)類(lèi)型的‘T’的模板形參)。這是目前的C++標(biāo)準(zhǔn)所不允許的寫(xiě)法,改答9T,}elsereturnT,N-1,N-1,14}這又是一個(gè)constexpr能簡(jiǎn)化表達(dá)的例子19并發(fā)編程中哪些情況下會(huì)發(fā)生死答:多個(gè)線(xiàn)程里,如果沒(méi)有或不能事先約定順序,同時(shí)進(jìn)行可阻塞的資源,順可阻塞的資源可能包括(但不限于互斥量上的lock調(diào)用條件變量上的wait調(diào)用對(duì)線(xiàn)程的join調(diào)用future的get調(diào)27你覺(jué)得C++RESTSDK接口好用嗎?如果好用,原因是什么?如果不好用,你有什么樣答:舉幾個(gè)可能的改進(jìn)點(diǎn)C++RESTSDK的uri::decode接口設(shè)計(jì)有不少問(wèn)題最嚴(yán)重的,不能對(duì)querystring的等號(hào)左邊的部分進(jìn)行decode;只能先split_querydecode,此時(shí)等號(hào)左邊已經(jīng)在map里,不能修改——要修改需要建一個(gè)新的map。目前的實(shí)現(xiàn)對(duì)“+”不能重新還原成空格換個(gè)說(shuō)法,目前的接口能正確處理“/serq=query%string”ser%=qutring”這樣的請(qǐng)求。應(yīng)當(dāng)有一個(gè)split_query_and_decode接口,同時(shí)執(zhí)行分割和另外,json的接口也還是不夠好用,最主要是沒(méi)有使用初始化列表的構(gòu)造。構(gòu)造復(fù)雜JSON結(jié)構(gòu)有點(diǎn)啰嗦了fstream::open_ostream缺省行為跟std::ofstream不一樣應(yīng)該是個(gè)bug。應(yīng)當(dāng)要么修正接口(接口缺省參數(shù)里帶上trunc),要么修正實(shí)現(xiàn)(跟std::ofstream一樣把out當(dāng)成out|trunc)。28“概念”可以為開(kāi)發(fā)具體帶來(lái)哪些好處?反過(guò)來(lái),的影響又可能會(huì)是什么SFINAE使用,還能以較為精確和形式化的形式在代碼里寫(xiě)出對(duì)類(lèi)型的要求,使得代碼變可、、前置+與sentl類(lèi)型對(duì)象的=(單一形式)。而為了滿(mǎn)足迭代器概念,則要額外確保滿(mǎn)足以下各點(diǎn):可默認(rèn)初始在i tor類(lèi)型和sentin
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年建筑工程公司與施工方分包合同
- 2024年慶典花卉租賃合同
- 2024年度環(huán)保設(shè)備生產(chǎn)與安裝合同
- 2024年企業(yè)間關(guān)于虛擬現(xiàn)實(shí)技術(shù)研發(fā)合同
- 2024年度BIM模型能耗分析與優(yōu)化服務(wù)合同
- 2024國(guó)有林業(yè)企業(yè)與農(nóng)村集體組織土地承包合同
- 2024年家庭遺產(chǎn)分配協(xié)議
- 2024年度金融科技合作協(xié)議
- 2024酒店布草采購(gòu)合同
- 2024年度離婚財(cái)產(chǎn)分配合同:涉及三個(gè)未成年子女的撫養(yǎng)權(quán)
- 膠質(zhì)瘤發(fā)病機(jī)制
- 卒中中心診療規(guī)范手冊(cè)
- 好看的皮囊千篇一律有趣的靈魂萬(wàn)里挑一
- 樁基晚上施工方案
- 電梯安全質(zhì)量管理體系建立
- 工廠(chǎng)改造施工方案
- 初中英語(yǔ)新課程標(biāo)準(zhǔn)詞匯表
- 《春節(jié)的文化與習(xí)俗》課件
- 手機(jī)棋牌平臺(tái)網(wǎng)絡(luò)游戲商業(yè)計(jì)劃書(shū)
- 學(xué)校體育與社區(qū)體育融合發(fā)展的研究
- 醫(yī)療機(jī)構(gòu)高警示藥品風(fēng)險(xiǎn)管理規(guī)范(2023版)
評(píng)論
0/150
提交評(píng)論