STL 常見庫函式

2021-07-08 09:37:10 字數 4601 閱讀 7209

stack

void push( const t& value );

向棧頂插入乙個元素

void pop();

移除棧頂元素

bool empty() const;

檢查棧是否為空

size_type size() const;

返回棧中元素的數量

reference top();

const_reference top() const;

更改棧頂元素

返回棧頂的元素

#include #include using namespace std;

int main()

queue

void push( const t& value ); 

在佇列尾插入乙個元素

void pop(); 

刪除佇列首部的元素

bool empty() const; 

檢查佇列是否為空

size_type size() const; 

返回佇列中元素的數量

reference front(); 

const_reference front() const;

更改佇列首部元素

返回佇列首部元素

reference back(); 

const_reference back() const;

更改佇列尾部元素

返回佇列尾部元素

#include #include using namespace std;

int main()

priority_queue

void push( const t& value ); 

向優先佇列中插入乙個元素

void pop();

刪除優先佇列首部的元素

bool empty() const; 

檢查優先佇列是否為空

size_type size() const;

返回優先佇列中元素的數量

const_reference top() const;

返回優先佇列首部的元素

#include #include using namespace std;

struct node

node(int val) ;

};struct cmp

};int main()

return 0;

}

vector

vectorv;

vectorv(v1);

vectorv(begin, end);

vectorv(n, elem);

建立乙個空的vector

複製乙個v1的vector

建立乙個[begin, end)區間的vector

建立乙個含有n個elem的vector

void assign(n, elem);

void assign(begin, end);

將n個elem的拷貝複製給v

將[begin, end)區間的值賦給v

reference at(size_type pos);

傳回索引pos所指的資料

reference front(); 

const_reference front() const;

傳回第乙個資料

reference back(); 

const_reference back() const;

傳回最後乙個資料

iterator begin(); 

const_iterator begin() const;

reverse_iterator rbegin(); 

const_reverse_iterator rbegin() const;

返回指向第乙個元素的位址

傳回乙個逆向佇列的第乙個資料的位址

iterator end(); 

const_iterator end() const;

reverse_iterator rend(); 

const_reverse_iterator rend() const;

v.insert(pos, elem);

v.insert(pos, n, elem);

v.insert(pos, begin, end);

在pos位置插入乙個elem拷貝

在pos位置插入n個elem拷貝

在pos位置插入[begin, end)的資料

v.erase(pos);

v.erase(v.begin(), v.end());

刪除pos位置的資料

刪除[v.begin(), v.end())的資料

bool empty() const;

判斷容器是否為空

size_type size() const;

返回容器中實際資料的個數

void push_back(const t& x);

在容器尾部加入乙個資料

void pop_back();

刪除最後乙個資料

void clear();

清空容器

v1.swap(v2);

swap(v1, v2);

將v1和v2互換

#include #include using namespace std;

int main() ;

vectorv; //宣告乙個空的vector

vectorv1(v); //複製乙個v的vector

vectorv2(10, 1); //v2中有10個元素,每個元素的值為1

vectorv3(ary + 1, ary + 4); //v3中以區間[ary[1], ary[4])賦值

v.assign(ary, ary + 10); //v中以區間[ary[0], ary[10])賦值

v1.assign(10, 2); //v1中有10個元素,每個元素的值為2

cout << v.at(1) << endl; //輸出v中在位置1中的元素

cout << v[1] << endl; //等同於上,不過他不會做位置越界的檢查

cout << v.front() << endl; //輸出v中第乙個位置的元素

v.front() = 100; //為第乙個位置的元素賦值

v.back() = 200; //為v中最後乙個元素賦值

cout << v.back() << endl; //輸出v中的最後乙個位置的元素

v.insert(v.begin(), 10); //在開頭插入元素10

v.insert(v.begin(), 5, 2); //在開頭插入5個元素,每個元素為2

v.insert(v.begin()+2, ary+5, ary+6); //在v[2]的位置開始插入[ary[5], ary[6])的元素

v.erase(v.begin() + 2); //刪除v[2]

v.erase(v.begin(), v.begin() + 5); //刪除[v[0], v[5])元素

for (vector::iterator itor = v.begin(); itor != v.end(); itor++)

cout << *itor << ' '; //正向遍歷vector陣列 v

cout << endl;

for (vector::reverse_iterator ritor = v.rbegin(); ritor != v.rend(); ritor++)

cout << *ritor << ' '; //逆向遍歷vector陣列 v

cout << endl;

cout << v.size() << endl; //輸出vector陣列中元素的個數

while (!v.empty()) //判斷v是否為空

v.pop_back(); //刪除v中最後乙個元素

v1.clear(); //清空vector陣列v1

v.swap(v2); //交換v和v2

return 0;

}

STL 庫函式的思考

stl 庫函式 庫函式的使用,使得c 的程式設計的工作大大減小了。但是有這麼乙個問題,使用庫函式必然會引起效率的降低。比如在函式呼叫中,如果是返回乙個vector,那麼很可能需要複製乙個向量,而在c中的話,使用動態分配記憶體就不需要複製向量來返回了。c 做為一種效率優先的語言,肯定是不能容忍這種複製...

STL標準庫函式總結

平時stl自己用的很少,很多庫函式都不是很熟悉,趁著最近有空,將stl的知識學習一下。主要學習一下,pair,vector,set,vector,stack,queue,map,string.位於標頭檔案 iostream 中用來表示乙個二元組或元素對 1.1 使用pair 定義乙個pair物件表示...

deque的STL常用庫函式

雙向佇列基本的庫函式 是一種優化了的 對序列兩端元素進行新增和刪除操作的基本序列容器。它允許較為快速地隨機訪問,但它不像vector 把所有的物件儲存在一塊連續的記憶體塊,而是採用多個連續的儲存塊,並且在乙個對映結構中儲存對這些塊及其順序的跟蹤。向deque 兩端新增或刪除元素的開銷很小。它不需要重...