版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
CPrimer:習交流使用,。。我已加入“騎士” )的保護計劃,需,:Jacen的技術筆記int{return}對象用途cincout標準輸出cerr標準錯誤 界定符:/*8161632161632long64610long10C++2個完全不同的操作。初始化的含義是創(chuàng)建變量的時:::變量定義:除之外,還需要申請空間如果想一個變量,而非定義它,需要使用externexternint int ::::::定義:::本身不是對象,所以不能定義的。如果指針指向了一個對象,則允許使用解符(*)來該對象void*不能定義指向的指針。但指針是對象,所以存在對指針的const定義:const用于定義一個變量,它的值不能被改變。const:::默認狀態(tài)下,constconst變量時,const允許為一個常量綁定非常量的對象、字面值,甚至是個一般表達式。low-levelconstconstexpr使用usingSISales_item;SISales_item類#ifndefSALES_DATA_H#defineSALES_DATA_Hstring表示可變長的字符序列,vector存放的是某種給定類型對象的可變長序列。命名空間的usingusing頭文件不應包含using。標準庫類型string#includeusingnamespacestrings1;strings3("value");strings3="value";strings4(n,'c');string s中第n個字符的 s1s2 ::::::for(declaration:expression)vectorvector<T>v1;vector<T>v2(v1);vector<T>v2=v1;vector<T>v3(n,val);vector<T>v4(n);vecrot<T>如果用花括號,則是使用列表初始化該vector對象。vector::: 等價于iter1==iter2iter1!=iter+niter-niter+=niter-=iter1 ::::::不存在的數(shù)組。size_tcnt=0;for(auto&row:a)for(auto&colrow){col=cnt;}int ];beginstringvector的成員,返回指向第一個元素的迭代器。也是一個標準庫函endstringvector的成員,返回一個尾后迭代器。也是一個標準庫函數(shù),輸入當一個對象用作右值得時候,用的是對象的值(內(nèi)容)當對象被用作左值得時候,用的是對象的(在內(nèi)存中的位置)!<>:::true,falseif(i=if(i==遞增運算符++n=(*p).size();n=p->size();condition?expression1:符~10,0反expr<<&expr1&^expr1^或|expr1|sizeofsize_tsizeofsizeof::: ifswitchcase關鍵字和它對應的值一起被稱為casecase必須是整形常量表達式執(zhí)行緊跟在default后面的語句。while
for(initializar;condition;for(declaration:dowhilewhile容易造成控制流,應使用。C++中異常處理包括:throw表達式、trycatchthrow表達式語句,終止函數(shù)的執(zhí)行。拋出一個異常,并把控制權轉移到能處理該異常的最近的catch字句。size_t{staticsize_tctr=return}函數(shù)可被多次,但只能被定義一次。編譯->當形參是類型,這時它對應的實參被傳遞或者函數(shù)被傳調(diào)用。被傳constvoidprint(constint*);voidpring(constint[]);voidprint(constint[10]);int return:::typedefstring::size_typestringscreen(szht=24,szwid=80,charbackground=':::使用inline來內(nèi)聯(lián)函數(shù)constexprvoiduseBigger(conststring&s1,conststring&s2,boolpf(conststring&,conststring&));voiduseBigger(conststring&s1,conststring&s2,bool(*pf)(conststring&,conststring&));封裝實現(xiàn)了類的接口的分離。任何對類成員的直接都被看作this的隱式std::stringisbn()const{returnstd::stringisbn()const{returnthis-doubleSales_data::avg_price()constifreturn}
return:::說明符用途 使用public定義的成員,在整個程序內(nèi)可被,public成員定義類的 使用private定義的成員可以被類的成員函數(shù),但是不能被使用該類的代碼,private部分封裝了類的實現(xiàn)細節(jié)。friend:::友元的僅僅制定了的權限,而非通常意義的函數(shù)。必須在友元之外再專門對函數(shù)進行一次。//classSales_datafriendSales_dataadd(constSales_data&,constSales_data&);friendstd::ostream&print(std::ostream&,constSales_data&);friendstd::istream&read(std::istream&,Sales_data&);}//nonmemberSales_datainterfaceSales_dataadd(constSales_data&,constSales_data&);std::ostream&print(std::ostream&,constSales_data&);std::istream&read(std::istream&,Sales_data&);add(constSales_data&lhs,constSales_data{Sales_datasum=lhs;//copydatamembersfromlhsinto //adddatamembersfromrhsintoreturn}//transactionscontainISBN,numberofcopiessold,andsalesread(istream&is,Sales_data{doubleprice=is>>item.bookNo>>item.units_sold>>price;item.revenue=price*item.units_sold;returnis;}print(ostream&os,constSales_data{os<<item.isbn()<<""<<item.units_sold<<"<<item.revenue<<""<<return}Screencharch=myScreen.get();ch=myScreen.get(0,0);classstd::vector<Screen>screens{Screen(24,80,'}classScreen// yoverloadedonwhethertheobjectisconstorScreen {do_disy(os);return*this;}constScreen&disy(std::ostream&os)const{do_disy(os);return*this;}classScreenfriendclass}classScreenfriendvoid}:::classConstRef(intintconstintci;int&ri;ConstRef:ConstRef(intii):i(ii),ci(ii),ri(i){doubler=stringstreamstringIOifstreamistringstreamistreamIOIO對象無拷貝或進行IO操作的函數(shù)通常以方式傳遞和返回流類作用ifstream從一個給定文件數(shù)據(jù)ofstream從一個給定文件寫入數(shù)據(jù)fstream讀寫給定文件string 作 從string數(shù) string //willholdalineandwordfrominput,stringline,//willholdalltherecordsfromthe Info>tread
//readtheinputalineatatimeuntilend-of-file(orotherwhile(getline(is,line))Info //objecttoholdthisistringstreamrecord(line);//bindrecordtothelinewerecord>> //readthewhile(record>> //readthephoneinfo.phones.push_back(word);//andstorepeople.push_back(info);//appendthisrecordto}h
//foreachentryinfor(vector< torentry=people.begin();entry!=people.end();++entry){ostringstreamformatted,badNums;//objectscreatedon//foreach
for tornums=entry-nums!=entry->phones.end();++nums)if(!valid(*nums))badNums<<""<<*nums;//stringin}}
//``writes''toformatted'sformatted<<""<<s
if //therewerenobados<<entry->name<<" //printthe<<formatted.str()<<endl;//andreformatted //otherwise,printthenameandcerr<<"inputerror:"<<entry-<<"invalidnumber(s)"<<badNums.str()<<} 與vector相似的容器,但專門用于保存字符、隨機快。在尾部 元素的左值誒性:與value_type&含義相同 元素的const左值類型(即,constvalue_type&)C C Cc(b,e) Cc{a,
c1c2c1={a,b,c...} 將c1中的元素替換為列表中元素(不適用于array) 交換a和b的元素swap(a, c中元素的數(shù)組(不支持forward_list) c中可保存的最大元素數(shù)目 c.em c.begin(), c.rbegin(),c.rend() c.crbegin(), 標準庫的迭代器允許我們?nèi)萜髦械脑?,所有迭代器都是通過解運算符來是尾元后的位置。它們標記了容器中元素的一個范圍。左閉合區(qū)間:[begin,while(begin*begin=}beginendbeginend是容器尾元后位置的迭代C CCC CC Cseq(n)s2={0};seq.assign(b,eseqbe所表示的范圍中的元素。迭be不能指向seq中的元素。:::表格P305vector<string>svec;svec.insert(svec.begin()," 使用emce操作emce函數(shù)直接在容器中構造函數(shù),不是拷貝注意end是指向的是容器尾元后的元素。 。若c為空,函數(shù)行為未定 返回c中下標為n的元素的,n是一個無符號整數(shù)。n>=size(),則函數(shù)行為未定義 outofrange 刪除c中尾元素。若c為空,則函數(shù)行為未定義。返回返回void 刪除c中首元素。若c為空,則函數(shù)行為未定義。返回void 刪除迭代器p所指定的元素,返回一個指向被刪除元后元pc.erase(b,e) be所指定范圍內(nèi)的元素。返回一個指向最后一個被刪除元后元素的迭代器。若e本身就是尾后迭代器,則函 reseize獲取新的內(nèi)存空間時,vectorstring通常會分配比新的新的空間需求更大的內(nèi)存空間。容器預留這些空間作為備用,可以用來保存的新元素。 請將capacity()減少為與size()相同大小 不重新分配內(nèi)存空間的話,c可以保存多少元素 vector預先分配多大的內(nèi)存空間。調(diào)用reverse不減少容器占用的內(nèi)存空間。capcacitycapcacity則是在不分配新的內(nèi)存空間的前提下它最多可以保存多少元素。構造string的其他方法strings(cp scpnstrings(s2 sstrings2pos2stringss2,pos2, sstrings2pos2len2substr操作0。ns.size()-pospos開始的所有字符insertrece刪除再插stringstring sargs sargs 在s中查找args中任何一個字符第一次出現(xiàn)的位置 在s中查找args中任何一個字符最后一次出現(xiàn)的位置 在s中查找第一個不在args中的字符 在s中查找最后一個不在args中的字符comparecompare6stack;queue; 或者由args構造s.em 由arg構 queuepriority_queue q.front()q.back()
元素,其值為item,或者由args構造迭代器。是否返回const迭代器依賴于容器的類型。cbegin容器操作:返回一個指向容器尾元后的 equal是否相等算法查寫操作:::boolisShorter(conststring&s1,conststring{retruns1.size()<}lambda[capturelist](parameterlist)->returntype{function兩種:值捕獲、捕獲:::當以方式捕獲一個變量時,必須保證在lambda執(zhí)行時變量是存在的。如果可能,避免捕獲指針或指定lambda返回類型:autonewCallable=bind(callable,inserter:創(chuàng)建一個使用inserter的迭代器iostream tor輸入流 tor操作: tor操 in1==in2in1!=
類型為T的 tor迭代器,表示尾后置in1和in2必須相同類型。如果它們都是尾后迭代器, 與(*in).mem++in, tor操作 tor out(os,d);
outTos一個d。d指向一個空字符串結尾的字符數(shù)組out 用<<valoutostream*out,++out,輸入迭代器只讀、不寫;單遍掃描,只能遞增輸出迭代器只寫,不讀;單遍掃描,只能遞增前向迭代器可讀寫;多遍掃描,只能遞增雙向迭代器隨機迭代器可讀寫,多遍掃描,支持全部迭代器運const對象的類 備 關鍵字可重復出現(xiàn)的set 用哈希函數(shù)組織的map 用哈希函數(shù)組織的set 哈希組織的map;關鍵字可以重復出現(xiàn) 哈希組織的set;關鍵字可以重復出現(xiàn)map是-值對的集合map<string,size_t>word_count;stringword;while(cin>>for(constauto&w:count<<w.first<<"cccurs"<<<((w.second>1)?"times":"time")<<setmap<string,size_t>word_count;set<string>exclude={"the","But"};stringword;while(cin>>if(exclude.find(word)==定義set時,只需指明關鍵字類型。pairpairutilitypair keytype,setconstsetmapconst的mapsetbeginendbeigin、end獲取迭代器,然后用迭代 v是value_type類型的對象; args用來構造一個元素c.insert(b,e)c.insert(p,v)c.emce(p,args) cp指定的元素。p必須指向c中一個真實元素,c.end()pp指向c中的尾元素,則返回.end()c.erase(b,e)bemapmapunorder_map的 鍵字為k的元素,對其進行值初始化 拋出一個outofrange異常:::回值是0或1)usingSD_multiset=unordered_multiset<Sales_data,decltype(hasher)*,dSD_multisetbookStore(42,haser, shared_ptr 享被釋放。uniqueptr不能直接拷貝或賦值。 象視,sharedptr并不把weak_ptr統(tǒng)計在內(nèi)。shared_ptr類make_shared函數(shù):share_ptr<int>p3=shared_ptr的拷貝和賦值用計數(shù)變?yōu)?,就會自動釋放自己所管理的對象。new分配分配內(nèi)存,deletenew分配的內(nèi)存。使用new動態(tài)分配和初始化對象:int*pi1new constint*pci=newconstdelete當unique_ptr銷毀時,它所指向的對象也被銷毀。unique_ptr操作unique_ptru1unique_ptr<T,D>u2u=nullptrweak_ptr操作weak_ptrww=p w wshared_ptrnewdelete unique_ptr<T[]>u;unique_ptr<T[]>u(p);allocatorautoconstp=表達 作allocator[T]a
new從自由空間分配內(nèi)存。newTTT類型為T的對象,并返回指向數(shù)組首元素的指針??截悩嬙旌瘮?shù)的第一個參數(shù)必須是一個類型classFoopublic}classFoo}classSales_dataSales_data(constSales_data&)=}=delete必須出現(xiàn)在函數(shù)第一次的時候。HasPtr&HasPtr::operator=(constHasPtr{autonewp=newdeleteps;ps=newp;i=return}如果需要可直接管理資源,可以使用計數(shù)右值int&&rr3=StrVec&StrVec::operator=(StrVec&&rhs){}移動迭代器的解運算符生成一個右值右值和成員函:::受一個T&&。this的左值/const成員函數(shù)相同,在參數(shù)列表后放置一個限定符。P483:::如果一個成員函數(shù)有限定符,則具有相同參數(shù)列表的所有版本都必須有限:::當一個重載的運算符是成員函數(shù)時,this綁定到左側運算對象。成員運算符函數(shù)的data1+重載輸出運算符ostream&operator<<(ostream&os,constSales_data{os<<item.isbn()<<""<<item.unites_sold<<""<<item.revenue<<""<<item.avg_price();return}重載輸入運算符istream&operator>>(istream&is,Sales_data{doubleis>>item.bookNo>>item.units_sold>>ifitem.revenue=items.units_sold*item=return}booloperator==(constSales_data&lhs,constSales_data{returnlhs.isbn()==rhs.isbn()lhs.unites_sold==rhs.units_sold&&lhs.revenue==rhs.revenue;}classreturn}conststd::string&operator[](std::size_tn)return}std::string}StrBlobPtr{StrBlobPtr&operator++();//}class}structintoperator()(intval)co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版土地使用權出讓居間合同規(guī)范文本-城市綜合體開發(fā)3篇
- 二零二五版住宅小區(qū)車位產(chǎn)權轉移及使用權購買合同3篇
- 2025版住宅小區(qū)消防設備設施定期檢查與維護合同范本2篇
- 2025年度木門行業(yè)環(huán)保認證與推廣合同3篇
- 2025年度國際物流合作解約及責任分擔協(xié)議書
- 二零二五年度美容店轉讓合同包括美容院品牌授權及區(qū)域代理權
- 2025年度二零二五年度大型活動臨時工人搬運服務承包協(xié)議
- 2025年度私人承包廠房租賃合同安全責任追究協(xié)議
- 二零二五板材行業(yè)數(shù)據(jù)分析與市場預測合同3篇
- 二零二五年度鏟車清雪作業(yè)安全責任保險合同
- 中考模擬考試化學試卷與答案解析(共三套)
- 新人教版五年級小學數(shù)學全冊奧數(shù)(含答案)
- 風電場升壓站培訓課件
- 收納盒注塑模具設計(論文-任務書-開題報告-圖紙)
- 博弈論全套課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 腦電信號處理與特征提取
- 高中數(shù)學知識點全總結(電子版)
- GB/T 10322.7-2004鐵礦石粒度分布的篩分測定
- 2023新譯林版新教材高中英語必修一重點詞組歸納總結
- 蘇教版四年級數(shù)學下冊第3單元第2課時“常見的數(shù)量關系”教案
評論
0/150
提交評論