原文:(原創)c++11改進我們的程序之垃圾回收

c 和java中有自動垃圾回收機制,.net運行時和java虛擬機可以管理分配的堆內存,在對象失去引用時自動回收,因此在c 和jva中, 內存管理不是大問題。c 語言沒有垃圾回收機制,必須自己去釋放分配的堆內存,否則就會內存泄露。 我相信大部分c 開發人員都遇到過內存泄露的問題,而查找內存泄露的問題往往要花大量的精力。要解決這個讓人頭疼的問題可 以采取一些辦法,最有效的辦法是使用智能指針 使用智 ...

2013-08-26 15:50 6 6888 推薦指數:

查看詳情

原創C++11改進我們的程序之簡化我們的程序(五)

這次要講的是:c++11中的bind和function std::function 它是函數、函數對象、函數指針、和成員函數的包裝器,可以容納任何類型的函數對象,函數指針,引用函數,成員函數的指針。以統一的方式處理函數、函數對象、函數指針、和成員函數。允許保存和延遲執行函數。 函數 ...

Thu Sep 05 05:44:00 CST 2013 2 9005
原創C++11改進我們的程序之簡化我們的程序(七)

這次要講的內容是:c++11中的tuple(元組)。tuple看似簡單,其實它是簡約而不簡單,可以說它是c++11中一個既簡單又復雜的東東,關於它簡單的一面是它很容易使用,復雜的一面是它內部隱藏了太多細節,要揭開它神秘的面紗時又比較困難。   tuple是一個固定大小的不同類型值的集合,是泛化 ...

Fri Sep 13 06:30:00 CST 2013 7 18676
原創C++11改進我們的程序之簡化我們的程序(一)

C++11在很多方面可以簡化我們的程序開發,我會在“簡化我們的程序”這一系列的博文中一一講到,敬請關注。這次要講的是:C++11如何通過獲取函數模板的返回值類型來簡化我們的程序。在談到簡化之前,我們先看一個問題,這個問題也是我前段時間在開發C++版本的linq時遇到的。假設我們現在需要將集合按某種 ...

Wed Aug 28 05:46:00 CST 2013 15 4339
原創C++11改進我們的程序之簡化我們的程序(四)

這次要講的是:c++11統一初始化、統一begin()/end()和for-loop循環如何簡化我們的程序 初始化列表 c++11之前有各種各樣的初始化語法,有時候初始化的時候還挺麻煩,比較典型的如vector和map的初始化。   這種寫法比較繁瑣,而且不 ...

Wed Sep 04 06:16:00 CST 2013 4 1975
原創C++11改進我們的程序之簡化我們的程序(六)

  這次要講的內容是:c++11中的lamda表達式。   lamda表達式是我最喜歡的一個c++11特性之一,在我的代碼中隨處可見它的身影,其實在c#3.5中就引入了lamda,java中至今還沒引入,要等明年的java8中才有lamda表達式,lamda來源於函數式編程的概念,也是現代 ...

Fri Sep 06 06:20:00 CST 2013 3 2895
原創C++11改進我們的程序之簡化我們的程序(二)

  這次要講的是:C++11如何通過組合函數來簡化我們的程序。關於組合函數,大家可能對這個概念有點陌生。組合函數是將N個一元函數組成一種更復雜的函數,每個函數的返回值作為參數傳給下一個函數,直到傳到最后一個函數結束。這種組合函數的能力可以使我們以一種更直觀的方式去完成復雜的鏈式執行行為。例如有三個 ...

Sat Aug 31 05:14:00 CST 2013 2 2399
原創C++11改進我們的程序之右值引用

本次主要講c++11中的右值引用,后面還會講到右值引用如何結合std::move優化我們的程序c++11增加了一個新的類型,稱作右值引用(R-value reference),標記為T &&,說到右值引用類型之前先要了解什么是左值和右值。左值具名,對應指定內存域,可訪問;右值 ...

Tue Oct 15 19:45:00 CST 2013 2 7410
原創C++11改進我們的程序之move和完美轉發

  本次要講的是右值引用相關的幾個函數:std::move, std::forward和成員的emplace_back,通過這些函數我們可以避免不必要的拷貝,提高程序性能。move是將對象的狀態或者所有權從一個對象轉移到另一個對象,只是轉移,沒有內存的搬遷或者內存拷貝。如圖所示是深拷貝和move ...

Sat Oct 19 00:06:00 CST 2013 3 8839
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM