zoukankan      html  css  js  c++  java
  • C++ 0X 新特性实例(比较常用的) (转)

    转自:http://www.cnblogs.com/mrblue/p/3141456.html

    //array
    #include <array>
    void Foo1()
    {
        array<int, 10> 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 = 0; i < 10; i++)
            {
                cout<<"t1:"<<i<<endl;
            }
        }
        );
    
        thread t2([]
        {
            for (int i = 0; i < 10; 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,1,1);
        cout<<"f1"<<endl;
    
        future<int> f2 = async(Test,2,2);
        cout<<"f2"<<endl;
    
        future<int> f3 = async(Test,3,3);
        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 = 0,
            II,
            III,
            IV,
            V
        };
    
        if( 4==(int)Type::V )
            cout<<MAKE_STR(Type::V)<<endl;
    }
    //auto
    #include <vector>
    void Foo6()
    {
        auto a = 10;
        cout<<a<<endl;
    
        auto b = 20.0f;
        cout<<b<<endl;
    
        auto& c = a;
        c++;
        cout<<a<<endl;
    
        vector<int> vec;
        
        for(int i = 0; i<10; 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(1)<<endl;
        cout<<a<<endl;
    }
    //lambda
    #include <functional>
    void Foo7()
    {
        int a = 0;
        int b = 10;
        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(1)<<endl;
    }
  • 相关阅读:
    filer jquery
    通过事件传参数
    spring 自动扫描bean
    springMvc
    jquery 自动完成
    webpack
    给数组对象中每个对象添加一个字段
    js对象的继承
    react项目中,点击跳转到详情页中,url中的地址有变化,但是页面没有进行跳转...
    ElementUI eltree 树形控件给节点添加图标
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3279609.html
Copyright © 2011-2022 走看看