2018-05-06

auto

//C++14自動推理返回值
//C++11 需要返回->指定類型


auto (*f)()  -> int(*)(); 
//f是什么類型?
int(*    (*fx)()   )( );    //返回值是函數(shù)指針


auto pf(void) -> auto(*)(int x)  -> int(*)(int a,int b)
{
    //層級運轉方式: 從左往右
    return nullptr;
} 
//pf是什么類型?
// auto pf(void) ->              auto(*)(int x)  ->               int(*)(int a,int b)
// int (*           (*           pf(void)                )(int x)                )(int a,int b)

// int (__cdecl*    (__cdecl*    __cdecl(void)           )(int)                   )(int,int)

void main()
{
    cout << typeid(pf).name() << endl;

    cin.get();
}

模板別名

template<class T> using t = T;
template<class T> using tp = T*;
template<class T> 
T show(T t1)
{
    t<T> tx(t1);
    tp<T>tp1(&tx);

    cout << tx << "  " << tp1 << endl;

    return  tx;
}

#include<array>

//模板別名 用別名優(yōu)化模板名稱 只能放在類 命名空間 全局 不能放在函數(shù)內部
template<class T1> using t1 = array<T1,10>;

template<class T, int n> using  wu = array<T, n>;

void main01()
{
    using intarry = array<int, 10>; //模板別名  明確類型


    double a=10;
//  cout << show(a) << endl;

    t1<int> t11{ 1,2,3,4,5,6,7,8,9,10 };
    for each (auto i in t11)
    {
        cout << i << endl;
    }

    wu<int, 10> t12{ 1,2,3,4,5,6,7,8,9,10 };
    for each (auto j in t12)
    {
        cout << j << endl;
    }

    cin.get();
}

收縮轉換 constexpr inline

//收縮轉換
void main02()
{

    //char ch0(7777) ; // 不保證結果的正確
    //char ch1{ 7777 };// 保證數(shù)據類型安全轉換  越界編譯錯誤

    cin.get();
}

//C++14 二進制
void main03()
{
    int a = 0b1001; //0b 0B代表二進制
    cout << a << endl; //9
    cin.get();
}

//constexpr 標識返回值或者其他表達式是常量
constexpr int get()
{
    return 5;
}

//inline
namespace all
{
    //inline 展開在all 默認的版本
    inline namespace V2015
    {

    }
}

lambda表達式

初級

//lambda表達式:  解決函數(shù)懷孕現(xiàn)在

void main04()
{
    //[] {cout << "ssssss" << endl;}();   //匿名表達式   ()最后一個括號 起調用
                                          //              { } 函數(shù)體 執(zhí)行                                

    auto fun = [] {cout << "sssss" << endl;};   //返回函數(shù)指針
    fun();  //調用

    []{ cout << "xxxxxxx" << endl,cout << "ddddd" << endl; }();

      //[]操作外部變量  ()參數(shù)列表    {}函數(shù)體   ()調用
    [] (char*str){cout << str << endl;}("kkkkk");  //匿名


    auto fun1 = [](char*str) {cout << str << endl;};
    fun1("yyyyyy");       //lambda 不可以直接取地址  無法當作函數(shù)指針


    auto fun2 = [](double a,double b)->int {return a+b;};  //指定返回值類型為int     ->  在()和{}之間  指定返回類型
    //內聯(lián)展開揭斧,無法取出地址

    //->decltype(a+b)  自動推理類型
    auto fun3 = [](double a, int b)->decltype(a+b){return a + b;};
    fun3(10, 11); //遵循副本機制

    cin.get();
}

高級

#include<array>
#include<algorithm> //算法頭文件


void main()
{

    int num1 = 10;
    int num2 = 11;
    [=]() {cout << num1 << "  " <<num2<< endl;}();  //  = 只能讀外部變量 不能寫
    [&]() {num1 = 50, num2 = 64, cout << num1 << "  " << num2 << endl;}();   //&  讀寫外部變量
    [=]()mutable {num1 = 50, num2 = 64, cout << num1 << "  " << num2 << endl;}();  // = mutable  修改副本



    int a = 10, b = 20, c = 30;
    [&a, b, c]() {a = 111, cout << a << "  " << b << " " << c << endl;}();  //[&a, b, c]  僅a可讀可寫  bc只可讀
                                                                            //[a,b,c] mutable   讀原本 寫副本      =只能指定全部


    //2015
    [](auto a = 0, auto b = 0) {cout << a + b << endl;}(10.8,11);   //C++14 推理數(shù)據類型   默認參數(shù)只能用=


    array<int, 10> myint{1,2,3,4,5,6,7,8,9,10};  //CPP風格叔祖
    for_each(myint.begin(), myint.end(), [](int num) {cout << num << endl;});  //顯示
    for_each(myint.begin(), myint.end(), [&](int num) {num+=1,cout << num << endl;});  //修改

    cin.get();
}

函數(shù)包裝器

#include<functional>  //函數(shù)包裝頭文件
using std::function;  //函數(shù)包裝器

void go()
{
    cout << "go" << endl;
 
}


int add(int a, int b)
{
    return a + b;
}

void main06x()
{
           //返回值 參數(shù)
    function<void(void)>  fun1 = go;
    fun1();

    function<void(void)>  fun2 = []() {cout << "go  lambda" << endl;};
    fun2();

    function<int(int, int)> fun3 = add;
    fun3(10,19);


    cin.get();
}

模板元

int get50(int n)
{
    if (n==1)
    {
        return 1;
    }
    else if(n==2)
    {
        return 2;
    }
    else
    {
        return get50(n - 2) + get50(n - 2);
    }
}

//遞歸: 反復調用 函數(shù)等待 返回 浪費時間多
//模板元實現(xiàn)遞歸加速
//執(zhí)行速度快 編譯時候慢 代碼體積會增加
//模板元 只能處理常量 把代碼的運行時間放在了編譯的時間  C11

template<int N>
struct data
{
    //遞歸
    enum {res=data<N-1>::res+data<N-2>::res};
};

template<>
struct data<1>
{
    enum {res=1};
};

template<>
struct data<2>
{
    enum { res = 2 };
};

void main()
{

    cout << data<40>::res << endl;  //模板元 只能處理常量 把代碼的運行時間放在了編譯的時間
    cout << get50(50) << endl;

    cin.get();
}

const

//C語言const 只能避免直接 無法避免間接


//const 在*左邊 內容不能改變   在*右邊 地址不能改變

void run1(const int *p);     //可以改變地址 不能改變內容
void run2(int const *p);

void run3(int* const  p);   //不可以改變地址 能改變內容

void run4(const int *  const p); //bu可以改變地址 不能改變內容
void run5(int const  * const p);

void main0xx7()
{

    const int n = 10;
    int a[n]{0};   //C++編譯器自動優(yōu)化  n替換為10

    const int num = 10;
    *(int*)(&num) = 3;
    cout << (void*)&num << endl;  
    cout << *(&num) << endl; // 10         讀寄存器 自動優(yōu)化  強行替換為10

    int a = 10;
    //const int num1 = a;
    *(int*)(&num1) = 3;
    cout << (void*)&num1 << endl;
    cout << *(&num1) << endl; // 3        直接讀內存 不作優(yōu)化


    const int numa[5]{ 1,2,3,4,5 };
    const int*p = numa;
    *(int*)p = 100;
    //const數(shù)組 沒有優(yōu)化 可以間接改變
    //*(p+2)=1;  指向常量的指針 無法修改


    cin.get();
}

智能指針

//智能指針 內存泄漏 自動管理內存

void autoptr()
{
    while (1)
    {
        double *p(new double[1024 * 1024]);
        auto_ptr<double>autop(p);  //接管  自動回收
    }

}

void autoptnew()
{
    while (1)
    {
        unique_ptr<double> p(new double[1024 * 1024*10]);  //
    }

}

tuple


//多元數(shù)組  tuple  存取不同的數(shù)據類型
#include<tuple>
void main08x()
{

    char ch = 'x';
    short sh = 1;
    int num = 22221;
    double db = 123.1;
    char*p = "calc";

    tuple<char, short, int, double, char*> mytule(ch,sh,num,db,p);
    auto autov = get<0>(mytule);  //<> 里面只能是常量
    cout << autov << endl;


    cin.get();
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梢夯,老刑警劉巖纠俭,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惊暴,死亡現(xiàn)場離奇詭異,居然都是意外死亡夸浅,警方通過查閱死者的電腦和手機仑最,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帆喇,“玉大人警医,你說我怎么就攤上這事∨髑眨” “怎么了预皇?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長婉刀。 經常有香客問我吟温,道長,這世上最難降的妖魔是什么突颊? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任鲁豪,我火速辦了婚禮,結果婚禮上洋丐,老公的妹妹穿的比我還像新娘呈昔。我一直安慰自己,他們只是感情好友绝,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布堤尾。 她就那樣靜靜地躺著,像睡著了一般迁客。 火紅的嫁衣襯著肌膚如雪郭宝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天掷漱,我揣著相機與錄音粘室,去河邊找鬼。 笑死卜范,一個胖子當著我的面吹牛衔统,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼锦爵,長吁一口氣:“原來是場噩夢啊……” “哼舱殿!你這毒婦竟也來了?” 一聲冷哼從身側響起险掀,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤沪袭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后樟氢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冈绊,經...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年埠啃,在試婚紗的時候發(fā)現(xiàn)自己被綠了死宣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡碴开,死狀恐怖十电,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情叹螟,我是刑警寧澤鹃骂,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站罢绽,受9級特大地震影響畏线,放射性物質發(fā)生泄漏。R本人自食惡果不足惜良价,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一寝殴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧明垢,春花似錦蚣常、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溯革,卻和暖如春贞绳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背致稀。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工冈闭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抖单。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓萎攒,卻偏偏與公主長得像遇八,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子耍休,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,511評論 1 51
  • 一羹应、變量 1、變量可能包含兩種不同數(shù)據類型的值:基本類型值和引用類型值次屠≡捌ィ基本類型值指的是 簡單的數(shù)據段,而引用類型...
    又一次揚帆閱讀 184評論 0 0
  • ios 面試題 1.KVO是基于runtime機制實現(xiàn)的2.當某個類的屬性對象第一次被觀察時劫灶,系統(tǒng)就會在運行期動態(tài)...
    我的夢工廠閱讀 167評論 0 1
  • 你走在秋天剛來的時候 那么匆匆 沒有帶走一絲留戀 只剩下親人們無盡的思念 痛楚 希望 歲月早日撫平 那些被傷的心靈
    高祥閱讀 230評論 0 0
  • 同是主演《愛情公寓》的主角,差別不是一般的大涌穆,如今除了胡一菲曾小賢經常出現(xiàn)在觀眾視野里怔昨,其他人你還記得嗎? 一幢并...
    休閑八卦閱讀 245評論 0 0