STL代码学习

 

成员函数指针 (pS->*p)(); 研究函数对象时要始终记住:它是一元函数还是二元函数 一元函数一般用于单个容器,二元一般用于两个容器(比较或者是修改) 如:find_if,for_each就是一元的 mismatch等就是二元的 transform既可以一元,也可以二元 template<class InputIterator, class OutputIterator, class UnaryFunction> OutputIterator transform( InputIterator _First1, InputIterator _Last1, OutputIterator _Result, UnaryFunction _Func ); template<class InputIterator1, class InputIterator2, class OutputIterator, class BinaryFunction> OutputIterator transform( InputIterator1 _First1, InputIterator1 _Last1, InputIterator2 _First2, OutputIterator _Result, BinaryFunction _Func ); transform (v.begin (),v.end (),v.begin (),bind1st (plus<int>(),7)); transform (v.begin (),v.end (),v.begin (),v.begin(),plus<int>()); STL绚丽用法: copy(v.begin (),v.end (),ostream_iterator<string>(cout,"/t")); back_insert_iterator<vector<int> > it = back_inserter (v); *it++=10; 仿函数 struct ADD { int operator ()(int i,int j ) { return i+j; } }; template<class F> void Func(F f,int i,int j) { cout<<f(i,j); } int main() { Func(ADD(),1,2); } boost库的正则表达式 const char *szReg = "(//w+)://((//w+//.)*//w+)((///w*)*)(///w+//.//w+)?"; const char *szStr = "http://www.abcd.com/123/456/78.html"; boost::regex reg( szReg ); bool r=boost::regex_match( szStr , reg); string result = boost::regex_replace (string(szStr),reg,"$1/n$2/n$3"); std::cout<<result; 精湛无比的C++模板元编程:(最好别用,否则容易编译出错) 1: template<int i> int ADD1() { return ADD1<i-1>()+i; } template<> int ADD1<1> () { return 1; } cout<<ADD1<10>(); 2: template<int j> struct ADD2 { enum{value = ADD2<j-1>::value +j}; }; template<> struct ADD2<1> { enum{value = 1}; }; cout<<ADD2<10>::value; */ 

 

你可能感兴趣的:(正则表达式,struct,String,Class,regex,insert)