转自:http://www.cnblogs.com/mrblue/p/3141456.html
//array
#include <array>
void Foo1()
{
array<int, > a;
generate(a.begin(), a.end(), rand);
sort(a.begin(), a.end()); for (auto n:a)
{
cout<<n<<" ";
}
cout<<"sizeof(a) = "<<sizeof(a)<<endl;
}
//regex
#include <regex>
void Foo2()
{
if( regex_match("Hello World!", regex("Hello World!")) )
{
cout<<"Math!"<<endl;
} if (regex_search("321Hello World!765", std::regex("Hello")) )
{
cout<<"Search!"<<endl;
}
}
//thread
#include <thread>
void Foo3()
{
thread t1([]
{
for (int i = ; i < ; i++)
{
cout<<"t1:"<<i<<endl;
}
}
); thread t2([]
{
for (int i = ; i < ; i++)
{
cout<<"t2:"<<i<<endl;
}
}
); t1.join();
t2.join();
}
//future (暂时没理解)
#include <future>
int Test(int a, int b)
{
cout<<"Test("<<a<<","<<b<<")"<<endl;
return a+b;
}
void Foo4()
{
future<int> f1 = async(Test,,);
cout<<"f1"<<endl; future<int> f2 = async(Test,,);
cout<<"f2"<<endl; future<int> f3 = async(Test,,);
cout<<"f3"<<endl; cout<<f1.get()<<endl<<f2.get()<<endl<<f3.get()<<endl;
}
//enum class
void Foo5()
{
#define MAKE_STR(s) #s
enum class Type
{
I = ,
II,
III,
IV,
V
}; if( ==(int)Type::V )
cout<<MAKE_STR(Type::V)<<endl;
}
//auto
#include <vector>
void Foo6()
{
auto a = ;
cout<<a<<endl; auto b = 20.0f;
cout<<b<<endl; auto& c = a;
c++;
cout<<a<<endl; vector<int> vec; for(int i = ; i<; i++)
{
vec.push_back(i);
} for(auto i = vec.cbegin(); i!=vec.cend(); i++)
{
cout<<*i<<endl;
} auto pF = [&c](int i)->int{ return c+=i; };
cout<<pF()<<endl;
cout<<a<<endl;
}
//lambda
#include <functional>
void Foo7()
{
int a = ;
int b = ;
function<int(int)> pA = [&a,b](int i)->int{ return a+=b+i; };
cout<<pA(a)<<endl;
cout<<a<<endl; //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
cout<<b<<endl; auto pC = [&](int i)->int{ return pA(i); };
cout<<pC()<<endl;
}