我會寫關於c++11的一個系列的文章,會講到如何使用c++11改進我們的程序,本次講如何改進我們的模式,會講到如何改進單例模式、觀察者模式、訪問者模式、工廠模式、命令模式等模式。通過c++11的改進,我們的模式變得更通用、更簡潔、更強大。本次講如何改進單例模式。 在c++11之前,我們寫單例模式 ...
C 在時空性能方面的改進 這篇我們聊聊C 在時間和空間上的改進點 主要包括以下方面: 新增的高效容器:array forward list以及unordered containers 以及常量表達式 靜態斷言和move語義 大小固定容器 array std::array是一個支持隨機訪問且大小 size 固定的容器,它是c 中新增的容器。它有如下特點: 不預留多余空間,只分配必須空間 譯注:siz ...
2015-09-07 10:56 2 4949 推薦指數:
我會寫關於c++11的一個系列的文章,會講到如何使用c++11改進我們的程序,本次講如何改進我們的模式,會講到如何改進單例模式、觀察者模式、訪問者模式、工廠模式、命令模式等模式。通過c++11的改進,我們的模式變得更通用、更簡潔、更強大。本次講如何改進單例模式。 在c++11之前,我們寫單例模式 ...
模式雖然精妙,卻難完美,比如觀察者模式中觀察者生命周期的問題;比如訪問者模式中循環依賴的問題等等;其它很多模式也存在這樣那樣的一些不足之處,如使用場景受限、實現復雜、不夠簡潔、不夠通用等。但我覺得不足之處大都是可以采取一些手法去彌補去改進的,比如用c++11的新特性來改進。因此,便有 ...
本次主要講c++11中的右值引用,后面還會講到右值引用如何結合std::move優化我們的程序。 c++11增加了一個新的類型,稱作右值引用(R-value reference),標記為T &&,說到右值引用類型之前先要了解什么是左值和右值。左值具名,對應指定內存域,可訪問;右值 ...
本次要講的是右值引用相關的幾個函數:std::move, std::forward和成員的emplace_back,通過這些函數我們可以避免不必要的拷貝,提高程序性能。move是將對象的狀態或者所有權從一個對象轉移到另一個對象,只是轉移,沒有內存的搬遷或者內存拷貝。如圖所示是深拷貝和move ...
這次要講的是:c++11中的bind和function std::function 它是函數、函數對象、函數指針、和成員函數的包裝器,可以容納任何類型的函數對象,函數指針,引用函數,成員函數的指針。以統一的方式處理函數、函數對象、函數指針、和成員函數。允許保存和延遲執行函數。 函數 ...
這次要講的內容是:c++11中的tuple(元組)。tuple看似簡單,其實它是簡約而不簡單,可以說它是c++11中一個既簡單又復雜的東東,關於它簡單的一面是它很容易使用,復雜的一面是它內部隱藏了太多細節,要揭開它神秘的面紗時又比較困難。 tuple是一個固定大小的不同類型值的集合,是泛化 ...
c#和java中有自動垃圾回收機制,.net運行時和java虛擬機可以管理分配的堆內存,在對象失去引用時自動回收,因此在c#和jva中, 內存管理不是大問題。c++語言沒有垃圾回收機制,必須自己去釋放分配的堆內存,否則就會內存泄露。 我相信大部分c++開發人員都遇到過內存泄露的問題,而查找 ...
C++11在很多方面可以簡化我們的程序開發,我會在“簡化我們的程序”這一系列的博文中一一講到,敬請關注。這次要講的是:C++11如何通過獲取函數模板的返回值類型來簡化我們的程序。在談到簡化之前,我們先看一個問題,這個問題也是我前段時間在開發C++版本的linq時遇到的。假設我們現在需要將集合按某種 ...