1. 程式人生 > 其它 >演算法學習100天——15 貪心思想

演算法學習100天——15 貪心思想

由於使用new/delete時,記憶體管理麻煩,容易導致記憶體洩漏等問題,C++11引入了智慧指標,與常規指標最大的區別在於它會自動釋放記憶體。

智慧指標有兩種,均是模板,建立方法為:shared_ptr(T) sp; unique_ptr(T) up; 表示建立兩個所指物件型別為T,名字分別為sp和up的智慧指標。
其中,shared_ptr允許多個指標指向同一個物件,unique_ptr則獨佔所指向的物件。

智慧指標初始化方法:

  • 使用make_shared函式,make_shared<T>(args)返回一個shared_ptr,指向一個動態分配的型別為T的物件,物件用引數args初始化。eg:shared_ptr<int> p = make_shared<int>(100)
  • 使用new方法,eg:shared_ptr<int> p (new int(100)),注意不能用等號,即shared_ptr<int> p = new int(100),因為不能將內建指標隱式轉換為智慧指標
  • 對於unique_ptr可以使用up.reset(q),表示如果提供了內建指標q,令up指向這個物件,否則將u置為空。

方法1只能用於shared_ptr,方法2同時適用於shared_ptr與unique_ptr;但是make_shared效率更高,其在分配記憶體的時候不會導致過多的記憶體碎片。