演算法學習100天——15 貪心思想
阿新 • • 發佈:2022-03-18
由於使用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效率更高,其在分配記憶體的時候不會導致過多的記憶體碎片。