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 };

 

你可能感兴趣的:(C++)