stl在c++實際工程中很重要,可以提供開發效率降低維護成本,實際開發中可能大家並不需要了解其內部實現,但了解大概的資料結構還是有好處的。
首先講下幾個在工程中stl的幾個典型問題: 1.判斷容器為不為空empty() 複雜度是o(1), 而用size() == 0可能是o(n);
2.clear()並不能釋放記憶體,用swap空容器釋放
3.區域性容器在跳出作用域將自動釋放容器記憶體
4.new 出來的容器,在delete的時候自動釋放容器
5.最好不要定義全域性的容器,可以通過先定義全域性指標,再new的方式
6.容器類的元素最好不要使用指標,因為這樣很多時候忘記釋放指標指向的記憶體,很容易造成記憶體洩露
stl的使用其實很簡單,首先講下stl最常用的容器類vector, 其實就是乙個動態陣列類,在工程中應用最廣泛了一種了
#include
#include
using namespace std;
#include#includeusing namespace std;
int main()
if(!b.empty()) cout<<"yes"<
c 工程基礎之STL系列 (三) set
set也是在工程中常用的資料結構,在需要快速查詢和插入的場景,也適合一些排重和需要按關鍵字排序插入的場景。multiset使用的場景應該不是太多,下面主要介紹下set中一些常用的方法。include include using namespace std struct node int main f...
STL基礎系列之 list
鍊錶 list 雙向鍊錶容器不支援隨機訪問,訪問鍊錶元素需要指出從鍊錶的某個端點開始,插入和刪操作所花費的時間是固定的,和該元素的位置無關。在任何位置插入和刪除動作都很快,不像vector只在末尾進行操作。stl list容器由於採用了雙向迭代器,不支援隨機訪問,所以標準庫的merge sort 等...
C 基礎 STL之棧stack
這篇文章介紹一下stl中stack的基本使用方法。棧也是最為常見的一種資料結構,佇列中的元素滿足filo 先進後出 include using namespace std stack函式名 用途功能說明 時間複雜度 size 查詢遍歷 獲取元素個數 o 1 top 查詢遍歷 獲取指向第乙個元素的迭代...