c 工程基礎之STL系列 (一) vector

2021-06-19 14:19:29 字數 575 閱讀 6497

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 查詢遍歷 獲取指向第乙個元素的迭代...