下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE
1
TransformI tor
Author: DavidAbrahams,JeremySiek,ThomasWitt
Contact: dave@bo ,
jsiek@,
witt@ive.uni-hannover.de
Organization: BoostConsulting, naUniversityOpenSystemsLab,UniversityofHanoverInstituteforTransportRailwayOperationandConstruction
Date: 2004-11-01
Copyright: CopyrightDavidAbrahams,JeremySiek,andThomasWitt2003.
:Thetransformi toradaptsani torbymodifyingtheoperator*toapplyafunctionobjecttotheresultofdereferencingthei torandreturningtheresult.
TableofContents
transform_i torsynopsistransform_i torrequirementstransform_i tormodelstransform_i toroperationsExample
transform_i torsynopsis
temte<classUnaryFunction,
classI tor,
classReference=use_default,classValue=use_default>
classtransform_i tor
{
public:
typedef/*seebelow*/value_type;typedef/*seebelow*/reference;typedef/*seebelow*/pointer;
typedefi tor_traits<I tor>::difference_typedifference_type;typedef/*seebelow*/i tor_category;
transform_i tor();
transform_i tor(I torconst&x,UnaryFunctionf);
temte<classF2,classI2,classR2,classV2>transform_i tor(
transform_i tor<F2,I2,R2,V2>const&t
PAGE
2
,typenameenable_if_convertible<I2,I tor>::type*=0 //ex-positiononly
,typenameenable_if_convertible<F2,UnaryFunction>::type*=0//ex-positiononly
);
UnaryFunctionfunctor()const;I torconst&base()const;referenceoperator*()const;
transform_i tor&operator++();transform_i tor&operator--();
private:
I torm_i tor;//expositiononlyUnaryFunctionm_f; //expositiononly
};
IfReferenceisuse_defaultthenthereferencememberoftransform_i torisresult_of<UnaryFunction(iteOtherwise,referenceisReference.
IfValueisuse_defaultthenthevalue_typememberisremove_cv<remove_reference<reference>
>::type.Otherwise,value_typeisValue.
IfItormodelsReadableLvalueItorandifItormodelsRandomAccessTraver-salItor,thenitor_categoryisconvertibletorandom_access_itor_tag.Otherwise,ifItormodelsBidirectionalTraversalItor,thenitor_categoryisconvertibletobidi-rectional_itor_tag.Otherwiseitor_categoryisconvertibletoforward_itor_tag.IfItordoesnotmodelReadableLvalueItorthenitor_categoryisconvertibletoin-put_itor_tag.
transform_itorrequirements
ThetypeUnaryFunctionmustbeAssignable,CopyConstructible,andtheexpressionf(*i)mustbevalidwherefisanobjectoftypeUnaryFunction,iisanobjectoftypeItor,andwherethetypeoff(*i)mustberesult_of<UnaryFunction(itor_traits<Itor>::reference)>::type.
TheargumentItorshallmodelReadableItor.
transform_itormodels
Theresultingtransform_itormodelsthemostrefinedofthefollowingthatisalsomodeledby
I tor.
WritableLvalueI toriftransform_i tor::referenceisanon-constreference.
ReadableLvalueI toriftransform_i tor::referenceisaconstreference.
ReadableI torotherwise.
Thetransform_itormodelsthemostrefinedstandardtraversalconceptthatismodeledbytheItorargument.
Iftransform_itorisamodelofReadableLvalueItorthenitmodelsthefollowingoriginalitorconceptsdependingonwhattheItorargumentmodels.
IfI tormodels thentransform_i tormodels
SinglePassI tor InputI tor
ForwardTraversalI tor ForwardI tor
BidirectionalTraversalI tor BidirectionalI torRandomAccessTraversalI tor RandomAccessI tor
PAGE
3
Iftransform_i tormodelsWritableLvalueI torthenitisamutablei tor(asdefinedintheoldi torrequirements).
transform_i tor<F1,X,R1,V1>isinteroperablewithtransform_i tor<F2,Y,R2,V2>
ifandonlyifXisinteroperablewithY.
transform_i toroperations
Inadditiontotheoperationsrequiredbytheconceptsmodeledbytransform_i tor,trans-form_i torprovidesthefollowingoperations.
transform_i tor();
Returns:Aninstanceoftransform_i torwithm_fandm_i tordefaultcon-structed.
transform_i tor(I torconst&x,UnaryFunctionf);
Returns:Aninstanceoftransform_i torwithm_finitializedtofandm_i tor
initializedtox.
temte<classF2,classI2,classR2,classV2>transform_i tor(
transform_i tor<F2,I2,R2,V2>const&t
,typenameenable_if_convertible<I2,I tor>::type*=0 //expo-sitiononly
,typenameenable_if_convertible<F2,UnaryFunction>::type*=0//expo-sitiononly
);
Returns:Aninstanceoftransform_i torwithm_finitializedtot.functor()and
m_i torinitializedtot.base().
Requires:OtherI torisimplicitlyconvertibletoI tor.UnaryFunctionfunctor()const;
Returns:m_f
I torconst&base()const;
Returns:m_i torreferenceoperator*()const;
Returns:m_f(*m_i tor)transform_i tor&operator++();
Effects:++m_i tor
Returns:*this
transform_i tor&operator--();
Effects:--m_i tor
Returns:*this
temte<classUnaryFunction,classI tor>transform_i tor<UnaryFunction,I tor>make_transform_i tor(I torit,UnaryFunctionfun);
Returns:Aninstanceoftransform_i tor<UnaryFunction,I tor>withm_fini-tializedtofandm_i torinitializedtox.
temte<classUnaryFunction,classI tor>transform_i tor<UnaryFunction,I tor>make_transform_i tor(I torit);
Returns:Aninstanceoftransform_i tor<UnaryFunction,I tor>withm_fde-faultconstructedandm_i torinitializedtox.
Example
Thisisasimpleexampleofusingthetransformitorsclasstogenerateitorsthatmultiply(oraddto)thevaluereturnedbydereferencingtheitor.Itwouldbecoolertouselambdalibraryinthiample.
intx[]={1,2,3,4,5,6,7,8};
constintN=sizeof(x)/sizeof(int);
typedefboost::binder1st<std::multiplies<int>>Function;
typedefboost::transform_i tor<Function,int*>doubling_i tor;
doubling_i tori(x,boost::bind1st(std::multiplies<i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年跨區(qū)域人才流動協(xié)議
- 2024年道路照明項目投資合作協(xié)議2篇
- 2024年股權轉讓合同詳規(guī)范本
- 2025版食堂廚具采購及安裝項目合同履行與維護合同3篇
- 2024年物業(yè)轉讓合同范本
- 2024年度科技研發(fā)貸款擔保委托合同3篇
- 2025版影視作品廣告植入承包協(xié)議3篇
- 2025版綠色建筑項目安全協(xié)議書3篇
- 2024年租賃協(xié)議爭議答辯指南版
- 2024年物流園區(qū)場地租賃與冷鏈物流配送合同3篇
- 《婚姻家庭糾紛調解》課件
- 遠程銀行行業(yè)背景分析
- 如何提高孩子的注意力和專注力
- 2022-2023學年海南省??谑兄攸c中學八年級(上)期末物理試卷(含解析)
- 2019-2020學年四川省南充市九年級(上)期末數(shù)學試卷
- 膽石癥教案完
- 護士個人優(yōu)點和缺點(六篇)
- DIN-EN-ISO-2409-CN國際標準文檔
- 教師管理培訓系統(tǒng)的設計與開發(fā)
- 公務員面試輔導(共75張PPT)
- 2021年新高考語文Ⅰ卷真題現(xiàn)代文閱讀《石門陣》解析
評論
0/150
提交評論