c++0x新特性实例(比较常用的)

//array

 1 #include <array>
 2 
 3 void Foo()
 4 {
 5     array<int,10> a;
 6     generate(a.begin(),a.end(),rand);
 7     sort(a.begin(),a.end());
 8 
 9     for (auto n:a)
10     {
11         cout<<n<<endl;
12     }
13     cout<<"sizeof(a)="<<sizeof(a)<<endl;
14 }

 

//auto

 1 #include <vector>
 2 void Foo()
 3 {
 4     auto a = 10;
 5     cout<<a<<endl;
 6 
 7     auto b = 20.0f;
 8     cout<<b<<endl;
 9 
10     auto& c = a;
11     c++;
12     cout<<a<<endl;
13 
14     vector<int> vec;
15     
16     for(int i = 0; i<10; i++)
17     {
18         vec.push_back(i);
19     }
20 
21     for(auto i = vec.cbegin(); i!=vec.cend(); i++)
22     {
23         cout<<*i<<endl;
24     }
25 
26     auto pF = [&c](int i)->int{ return c+=i; };
27     cout<<pF(1)<<endl;
28     cout<<a<<endl;
29 }

 

//regex

 1 #include <regex>
 2 void Foo()
 3 {
 4     if( regex_match("Hello World!",std::regex("Hello .....!")) )
 5     {
 6         cout<<"Math!"<<endl;
 7     }
 8 
 9     if( regex_search("321Hello World!765",std::regex("Hello .....!")) )
10     {
11         cout<<"Search!"<<endl;
12     }
13 
14 }

 

//thread

 1 void Foo()
 2 {
 3     thread t1([]
 4     {
 5         for (int i = 0; i < 10; i++)
 6         {
 7             cout<<"t1:"<<i<<endl;
 8         }
 9     }
10     );
11 
12     thread t2([]
13     {
14         for (int i = 0; i < 10; i++)
15         {
16             cout<<"t2:"<<i<<endl;
17         }
18     }
19     );
20 
21     t1.join();
22     t2.join();
23 }

 

//future

 1 #include <future>
 2 int Test(int a,int b)
 3 {
 4     cout<<"Test("<<a<<","<<b<<")"<<endl;
 5     return a+b;
 6 }
 7 
 8 void Foo()
 9 {
10     future<int> f1 = async(Test,1,1);
11     cout<<"f1"<<endl;
12     future<int> f2 = async(Test,2,2);
13     cout<<"f2"<<endl;
14     future<int> f3 = async(Test,3,3);
15     cout<<"f3"<<endl;
16 
17     cout<<f1.get()<<endl<<f2.get()<<endl<<f3.get()<<endl;
18 }

 

//enum class

 1 void Foo()
 2 {
 3 #define MAKE_STR(s) #s 
 4     enum class Type
 5     {
 6         I = 0,
 7         II,
 8         III,
 9         IV,
10         V
11     };
12 
13     if (4==(int)Type::V)
14     {
15         cout<<MAKE_STR(Type::V);
16     }
17 }

 

//tuple

 1 tuple<int,string,float> Do()
 2 {
 3     return make_tuple(10,"hi",20.0f);
 4 }
 5 void Foo()
 6 {
 7     int a = 0;
 8     string s = "";
 9     float b = .0f;
10     tie(a,s,b) = Do();
11 
12     cout<<a<<endl;
13     cout<<s.c_str()<<endl;
14     cout<<b<<endl;
15 }

 

//lambda

 1 #include <functional>
 2 void Foo()
 3 {
 4     int a = 0;
 5     int b = 10;
 6     function<int(int)> pA = [&a,b](int i)->int{ return a+=b+i; };
 7     cout<<pA(1)<<endl;
 8     cout<<a<<endl;
 9 
10     //function<int(int)> pB = [&a,b](int i)->int{ return b+=a+i; }; compile error : 'b': a by-value capture cannot be modified in a non-mutable lambda
11     cout<<b<<endl;
12 
13     auto pC = [&](int i)->int{ return pA(i); };
14     cout<<pC(1);
15 }

 

//final

 1 class A final
 2 {
 3 };
 4 /*
 5 class B : public A
 6 {
 7 };
 8 */
 9 class C
10 {
11     virtual void c()final{ }
12 };
13 
14 class D : public C
15 {
16     //virtual void c(){ }
17 };

 

//override

 1 class A
 2 {
 3     virtual void a(){}
 4 };
 5 
 6 class B : public A
 7 {
 8     virtual void a()override{}
 9     //virtual void a(int i)override{} error
10     //virtual void c()override{} error
11 };

 

posted @ 2013-06-17 23:46  MrBlue  阅读(872)  评论(0编辑  收藏  举报