91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何改進c++11中的模板

發布時間:2020-07-28 16:17:20 來源:億速云 閱讀:137 作者:小豬 欄目:編程語言

這篇文章主要講解了如何改進c++11中的模板,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

C++11關于模板有一些細節的改進:

  • 模板的右尖括號
  • 模板的別名
  • 函數模板的默認模板參數

模板的右尖括號

C++11之前是不允許兩個右尖括號出現的,會被認為是右移操作符,所以需要中間加個空格進行分割,避免發生編譯錯誤。

int main() {
  std::vector<std::vector<int>> a; // error
  std::vector<std::vector<int> > b; // ok
}

這個我之前都不知道,我開始學編程的時候就已經是C++11的時代啦。

模板的別名

C++11引入了using,可以輕松的定義別名,而不是使用繁瑣的typedef。

typedef std::vector<std::vector<int>> vvi; // before c++11
using vvi = std::vector<std::vector<int>>; // c++11

使用using明顯簡潔并且易讀,大家可能之前也見過使用typedef定義函數指針之類的操作,那爛代碼我就不列出來了,反正我是看不懂也不想看...以后都可以使用using,額還是列出來吧。

typedef void (*func)(int, int); // 啥玩意,看不懂
using func = void (*)(int, int); // 起碼比typedef容易看的懂吧

上面的代碼使用using起碼比typedef容易看的懂一些吧,但是我還是看不懂,因為我從來不用這種來表示函數指針,用std::function()、std::bind()、std::placeholder()、lambda表達式它不香嗎。

函數模板的默認模板參數

C++11之前只有類模板支持默認模板參數,函數模板是不支持默認模板參數的,C++11后都支持。

template <typename T, typename U=int>
class A {
   T value; 
};

template <typename T=int, typename U> // error
class A {
   T value; 
};

類模板的默認模板參數必須從右往左定義,而函數模板則沒有這個限制。

template <typename R, typename U=int>
R func1(U val) {
  return val;
}

template <typename R=int, typename U>
R func2(U val) {
  return val;
}

int main() {
  cout << func1<int, double>(99.9) << endl; // 99
  cout << func1<double, double>(99.9) << endl; // 99.9
  cout << func1<double>(99.9) << endl; // 99.9
  cout << func1<int>(99.9) << endl; // 99
  cout << func2<int, double>(99.9) << endl; // 99
  cout << func1<double, double>(99.9) << endl; // 99.9
  cout << func2<double>(99.9) << endl; // 99.9
  cout << func2<int>(99.9) << endl; // 99
  return 0;
}

對于函數模板,參數的填充順序是從左到右的。

看完上述內容,是不是對如何改進c++11中的模板有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永胜县| 龙泉市| 包头市| 徐闻县| 剑河县| 益阳市| 阿尔山市| 时尚| 定日县| 沿河| 三穗县| 马边| 磐安县| 元氏县| 永州市| 九寨沟县| 星子县| 玛沁县| 鱼台县| 保亭| 富裕县| 保康县| 仪陇县| 文安县| 息烽县| 广水市| 通州市| 荣成市| 天台县| 栾城县| 甘德县| 墨竹工卡县| 来宾市| 南阳市| 大名县| 朔州市| 岳阳市| 长岭县| 阜平县| 泸溪县| 广平县|