STL模板整理 vector

2022-05-26 12:48:16 字數 2636 閱讀 1692

1、c++標準模板庫與c++標準庫的關係

c++標準模板庫其實屬於c++標準庫的一部分,c++標準模板庫主要是定義了標準模板的定義與宣告,而這些模板主要都是

類模板,我們可以呼叫這些模板來定義乙個具體的類;與之前的自己手動建立乙個函式模版或者是類模板不一樣,我們使用了

stl就不用自己來建立模板了,這些模板都定義在標準模板庫中,我們只需要學會怎麼使用這些類模板來定義乙個具體的類,

然後能夠使用類提供的各種方法來處理資料。

2、stl六大元件:容器(containers)、演算法(algorithms)、迭代器(iterators)、函式物件(functors)、介面卡(adapters)、分配器(allocators)

迭代器是一種物件,它能夠用來遍歷stl容器中的部分或全部元素,每個迭代器物件代表容器中的確定的位址,所以可以認為迭代器其實就是用來指向容器中數

據的指標,我們可以通過改變這個指標來遍歷容器中的所有元素。

首先,我們必須理解一下什麼是容器,對比我們生活當中的容器,例如水杯、桶、水瓶等等這些東西,其實他們都是容器,他們的乙個共同點就是:都是用來

存放液體的,能夠用來存放一些東西;其實在我們的c++中說的這個容器其實作用也是用來存放"東西",但是存放的是資料,在c++中容器就是一種用來存放

資料的物件。

1、c++中的容器其實是容器類例項化之後的乙個具體的物件,那麼可以辦這個物件看成就是乙個容器。

2、因為c++中容器類是基於類模板定義的,也就是我們這裡說的stl(標準模板類)。為什麼需要做成模板的形式呢?因為我們的容器中存放的資料型別其實

是相同的,如果就因為資料型別不同而要定義多個具體的類,這樣就不合適,而模板恰好又能夠解決這種問題,所以c++中的容器類是通過類模板的方式定義的

,也就是stl。

3、容器還有另乙個特點是容器可以自行擴充套件。在解決問題時我們常常不知道我們需要儲存多少個物件,也就是說我們不知道應該建立多大的記憶體空間來存放我們

的資料。顯然,陣列在這一方面也力不從心。容器的優勢就在這裡,它不需要你預先告訴它你要儲存多少物件,只要你建立乙個容器物件,並合理的呼叫它所提

供的方法,所有的處理細節將由容器來自身完成。它可以為你申請記憶體或釋放記憶體,並且用最優的演算法來執行您的命令。

4、容器是隨著物件導向語言的誕生而提出的,容器類在物件導向語言中特別重要,甚至它被認為是早期物件導向語言的基礎。

stl對定義的通用容器分三類:順序性容器關聯式容器容器介面卡

我想說的是對於上面的每種型別的容器到底是是什麼意思,其實沒必要去搞懂,沒什麼價值,只要你能夠大概理解知道即可,知道每種容器型別下有哪些具體的容器

即可。順序性容器:vector、deque、list

關聯性容器:set、multiset、map、multimap

容器介面卡:stack、queue、

vector向量是一種順序行容器。相當於陣列,但其大小可以不預先指定,並且自動擴充套件。它可以像陣列一樣被操作,由於它的特性我們完全可以將vector 看作動態陣列。

用法:

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define is_lower(c) (c >= 'a' && c <= 'z')

#define is_upper(c) (c >= 'a' && c <= 'z')

#define is_alpha(c) (is_lower(c) || is_upper(c))

#define is_digit(c) (c >= '0' && c <= '9')

#define min(a, b) ((a) < (b) ? (a) : (b))

#define max(a, b) ((a) > (b) ? (a) : (b))

#define io \ios::sync_with_stdio(

0); \

cin.tie(

0); \

cout.tie(0);

#define for(i, a, b) for (int i = a; i <= b; i++)typedef

long

long

ll;typedef unsigned

long

long

ull;

typedef

intt;

const ll inf = 0x3f3f3f3f

;const

double eps = 1e-10

;const ll inf_ll =(ll)1e18;

const ll mod =1000000007ll;

const

int maxn = 1000000

;int

main()

C 標準模板庫(STL)整理之vector

vector vector也叫變長陣列,即 長度根據需要而自動改變的陣列 在編寫c 程式時使用vector,需要加上以下標頭檔案和語句 include using namespace std 1.vector的定義 vector typename name 其中typename指的是型別,name則...

STL標準模板庫 vector

原 2019年02月09日 12 24 18 bbbbbinary 閱讀數 162 更多分類專欄 stl 筆記總結 vector可以看作陣列的增強版,可以用類似陣列的直接取得方式訪問,也可以使用函式操作,好處是可以不用提前規定長度,可以實現不定長度的儲存。需要的標頭檔案 include vector...

STL標準模板庫 vector

原 2019年02月09日 12 24 18 bbbbbinary 閱讀數 162 更多分類專欄 stl 筆記總結 vector可以看作陣列的增強版,可以用類似陣列的直接取得方式訪問,也可以使用函式操作,好處是可以不用提前規定長度,可以實現不定長度的儲存。需要的標頭檔案 include vector...