资源描述:
《C++ boost常用组件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C++boost常用组件2012年12月24日14:55 nocopyable:classDoNotCopy:boost::noncopyable{...};singleton:classBlaBla{...};typedefboost::singleton_defaultBLABLA;assert默认情况boost::BOOST_ASSERT(e
2、xpr)等同于C的assert(expr)在#include之前加上#defineBOOST_DISABLE_ASSERTS,boost::BOOST_ASSERT将失效foreachvectorv;stringstr="abcdefg";//orchar*...//assignboost::BOOST_FOREACH(intx,v){printf("%d,",x);}boost::BOOST_REVERSE_FOREAC
3、H(charc,str){printf("%c-",c);}bind绑定普通函数intNormalFunc(inta,intb){}boost::bind(NormalFunc,10,20);//NormalFunc(10,20);boost::bind(NormalFunc,_1,20)(x);//NormalFunc(x,20);boost::bind(Normalfunc,_1,_2)(x,y);//NormalFunc(x,y);boost::bind(Normal
4、func,_2,_1)(x,y);//NormalFunc(y,x);boost::bind(Normalfunc,_1,_1)(x,y);//NormalFunc(x,x);boost::bind(NormalFunc,10,_1)(x);//NormalFunc(x,20);绑定成员函数intClassA::ClassFunc(inta,intb){}boost::bind(&ClassA::ClassFunc,x,10,20);x可以使类型ClasssA的普通对象、引用或者指针,参数形式也可用使用类
5、似上边的占位符functionfunctionfunc1;functionfunc2;//orfunctionfunc2;intFunc1(){}intFunc2(inta,intb){}func1=Func1;func2=Func2;threadthreadintNormalFunc(inta,intb){}boost::thread(NormalFunc
6、,10,20);//使用临时变量joinboost::threadt1(NormalFunc,10,20);boost::threadt2(NormalFunc,100,200);t1.timed_join(posix_time::seconds(10));//最多join10秒后返回t2.join();interrupt线程只有到中断点才能被中断掉thread_groupboost::threadtg;tg.create_thread(NormalFunc,10,20);tg.create_thread
7、(NormalFunc,101,200);类成员线程boost::threadt1(boost::bind(ClassA::ClassFunc,x,10,20));boost::threadtg;tg.create_thread(boost::bind(ClassA::ClassFunc,x,10,20));x可以使类型ClasssA的普通对象、引用或者指针。在类内部时,x换成thismutexboost::mutexmu;应该使用try-catch保证解锁try{mu.lock;...;mu.unloc
8、k;}catch(...){mu.unlock;}mutex使用类内部类型定义scopted_lock执行以上的try-catch,以上代码可简写为:boost::mutexmu;mutex::scoped_locks_lock(mu);...scope_lock会锁定一个代码块({}),一般使用{}扩住一个代码块,块内第一行使用之;条件变量mutexmu;boost::condition_variable_anycond;{