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...