STL 標準模板庫

2021-10-05 01:20:06 字數 2025 閱讀 5075

1了解標準模板庫stl

stl: 標準模板庫

stl, standard template library

標準模板庫,一般支援c++的編譯器都帶了stl的支援。裡面 提供了大量的函式模板(通用演算法)和類模板。

為什麼我們一般不需要自己寫模板?因為stl裡已經為我們 寫好了。

我們的任務是:學會使用它們。

stl: 標準模板庫

stl裡的模板太多,這一章介紹裡面最常用的幾個:

vector, list, map, string

一般用法:

(1)標頭檔案

stl的標頭檔案都是不帶.h字尾的,例如,要用vector的話則 #include // 不是vector.h

(2) 名字空間

stl使用名字空間std,因此可能需要使用

using namespace std;

或using std::vector;

stl: 標準模板庫

演示:例如,vector向量,用於封裝乙個類似陣列的功能。

vector arr;

arr.push_back(12);

arr.push_back(13);

printf("%d, %d \n", arr[0], arr[1]);

2標準模板庫stl之vector

stl: vector

要點:要明白vector內部的實現機制(參考第29章中的例子)

buffer: 緩衝區

capacity: 緩衝區的大小

size: 元素的個數

3標準模板庫stl之list

stl: list

list: 封裝鍊錶相關的功能

stl: list函式列表

函式名稱 功能

push_back 在尾部新增乙個元素

pop_back 的尾部刪除乙個元素

push_front 在尾部新增乙個元素

pop_front 的尾部刪除乙個元素

clear 清空所有元素

size 返回元素的個數

front 返回頭元素

back 返回尾元素

insert 在中間插入元素

erase 刪除中間的元素

遍歷鍊錶不能隨機訪問,只能按順序鏈式訪問,所以,只能使用 迭代器iterator

list::iterator, list內的迭代器

插入/刪除

list比vector用適合插入刪除操作

list鍊錶中插入/刪除乙個節點

(1)遍歷list,找到目標位置

(2)呼叫insert/erase,插入/刪除乙個節點

重要性vector可有可無,但list不可或缺

vector不常用到,使用普通的陣列完全沒有問題。

list經常用到,如果沒有list,那麼每個鍊錶都需要從頭寫 起,非常麻煩。

理解list的實現

template

class list

node m_head; // 頭節點 };

注意list內部維持了一串物件

object a;

a.id = 123;

strcpy(a.name, 「shaofa」);

list objs;

objs.push_back(a);

則鍊錶objs內部是建立了乙個物件,拷貝了a的內容

4標準模板庫stl之string

stl: string

封裝了字串相關的操作

內部實現和vector類似。操作介面上增加了字串的介面。

string是模板嗎?

實際上,string是模板,是被typedef出來的型別。 存在兩種字串:string和wstring(寬字串,unicode)

typedef basic_stringstring;

typedef basic_string, allocator> wstring;

5標準模板庫stl之map

學習資源《c語言/c++學習指南》語法篇(從入門到精通)》

STL 標準模板庫)

此篇只是乙個目錄,將分成單篇去完成 stl 主要有三個部分組成 容器,迭代器,演算法。順序容器 向量 vector 雙端佇列 dequeue 表 list ps copy 方法 關聯容器 集合 set 多重集合 multiset 對映 map 多重對映 multimap 容器介面卡 棧 stack ...

Stl(標準模板庫)

stl 標準模板庫 stl的目的是標準化元件,這樣就不用重新開發,可以使用現成的元件。我們常用到的stl容器有vector list deque map multimap set和multiset。1.簡單概括 如果需要高效的隨機訪問,不在乎插入和刪除的效率,使用vector 類似陣列 2 如果需要...

STL標準模板庫

stl標準模板庫 一。概述 c 內建的標準模板庫stl可以分為以下6大類 1.容器 2.迭代器 3.空間分配器 4.介面卡 5.演算法 6.仿函式 1.容器 概念 用來管理一組元素 分類 序列式容器 sequence containers 每個元素都有固定位置 取決於插入時機和地點,和元素值無關。v...