日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Boost库学习(0)

發布時間:2025/7/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Boost库学习(0) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

最近看了C++11標準,感覺C++的變得更強大了,連語法都有了點變化。(最后一次用C++可能還是在學校時,工作中一直用的是C,偶爾也用Perl/Python寫點工具。)

實際試用了一下C++的新特性,有點失望。不是C++11的特性不好,而是編譯器不完全支持。聽說C++14的標準都要出來了,而C++11都沒有完全支持。

例如:

  • 多線程,Linux下要在鏈接時手動加入pthread才行,不然運行出錯;Windows下好像不用特別做什么。(也可能是IDE自己做了,我不知道而已。)

  • 正則表達式,Linux下GCC編譯支持,運行不支持。(也可能是沒有鏈接某個庫)

我實在不喜歡這種明明是標準,卻還要滿世界找鏈接庫的事情,所以決定用Boost庫。(雖然也要鏈接Boost的庫,但是卻明明白白。)


在正式開始學習Boost庫之前,先介紹幾個要用到C++11新特性。

  • 匿名函數

?????? STL中有很多地方要用函數作為參數,為了傳一個參數而在老遠的地方定義一個函數實在有些不爽。

[capture-type](param-list)?{?function?body?}

????? capture-type有3種,空白,=和&。空白的話,function body里只能使用傳入的參數(可能也能用全局變量,這個沒試過);=表示可以用外部的變量(值傳遞);&表示可以用外部的變量(引用傳遞)。

void?funcX() {std::vector<int>?vec;...int?factor=3;/*?使用=,可以用外部的變量factor?*/int?cnt=std::count_if(vec.cbegin(),vec.cend(),[=](int?elem){?return?elem%factor;?}); }
  • for

?????? C++一直遭人詬病的沒有foreach,現在終于彌補了這個遺憾。

void?funcX() {std::vector<int>?vec;...for(int?elem:vec){...}/*?相當于下面的代碼?*//*?for(std::vector<int>::iterator?it=vec.begin();it!=vec.end();++it)*?{*?????int?elem=*it;*?????...*?}*/ }
  • auto

??????自動推測變量的類型,這是個好東西,又省心又省力。

?for(std::vector<int>::iterator?it=vec.begin();it!=vec.end();++it)/*?相當于下面的代碼?*/for(auto?it=vec.begin();it!=vec.end;++it)
  • shared_ptr

????? 用于自動delete內存空間。內部自動計算引用次數(即有幾個指針指向這塊空間),當引用次數變成0時,自動調用delete處理。

轉載于:https://my.oschina.net/u/2002913/blog/306507

總結

以上是生活随笔為你收集整理的Boost库学习(0)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。