STL基本用法總結

2021-07-10 06:25:06 字數 3578 閱讀 5691

1、vector的基本用法  

#include (1

)定義:

vectors;定義乙個空的

vector

物件,儲存的是

int型別的元素。

vectors(n);定義乙個含有n個

int元素的

vector

物件。

(2)基本操作:

s[i];直接以下標方式訪問容器中的元素。

s.front();返回首元素。

s.back();返回尾元素。

s.size();返回表長。

s.empty();當表為空時返回

true

,否則返回

false。

s.pop_back();刪除表尾元素。

s.begin();返回指向首元素的迭代器。

s.end();返回指向尾元素的迭代器。

s.insert(it , x);向迭代器

it指向的元素前插入新元素 x。

s.insert(it , n , x);向迭代器

it指向的元素前插入

n個新元素x。

s.insert(it , first , lase);將由迭代器

first

和last

所指定的序列

[first , last)

插入到迭代器

it所指向的元素前面。

s.erase(it);刪除由迭代器

it指向的元素。

s.erase(first , last);刪除由迭代器

first

和last

所指定的序列

[first , last)。

s.reserve(n);預分配緩衝空間,使儲存空間至少可容納

n個元素。

s.resize(n);改變序列的長度,超出的元素將全被刪除,如果序列需要擴充套件(原空間小於

n),元素預設值將填滿擴充套件出的空間。

s.resize(n , val);改變序列的長度,超出的元素將全被刪除,如果序列需要擴充套件(原空間小於n

),元素

val將填滿擴充套件出的空間。

s.clear();刪除容器中的所有元素。

s1.swap(s2);容器s1、

s2互換。

s.assign(first , last);將序列替換成由迭代器

first

和last

所指定的序列

[first , last)

。[first , last)不能是原序列中的一部分。

2、stack的基本用法  

#include (1

)定義:

stacks;

stacks; (2

)基本操作:

s.push(x);

x入棧。

s.pop();出棧(刪除棧頂元素,不返回)。

s.top();訪問棧頂元素。

s.empty();判斷棧是否為空(空時返回

true

,否則返回

false)。

3、queue的基本用法  

#include (1

)定義:

queueq;

queueq; (2

)基本操作:

q.push(x);

x入隊。

q.pop();出隊(彈出佇列第乙個元素,不返回)。

q.front();訪問隊首元素。

q.back();訪問隊尾元素。

q.empty();判斷佇列是否為空(空時返回

true

,否則返回

false)。

q.size();返回佇列中元素的個數。

4、priority_queue的基本用法  

#include 在

標頭檔案中,還定義了另乙個非常有用的模板類

priority_queue(

優先佇列)。優先佇列與佇列的差別在於優先佇列不是按照入隊的順序出隊,而是按照佇列中元素的優先權順序出隊(預設為大者優先,也可以通過指定運算元來指定自己的優先順序)。 

priority_queue模板類有三個模板引數,第乙個是元素型別,第二個容器型別,第三個是比較運算元。其中後兩個都可以省略,預設容器為

vector

,預設運算元為

less

,即小的往前排,大的往後排(出隊時序列尾的元素出隊)。  (1

)定義:

從大到小輸出:priority_queuepq;

從小到大輸出:priority_queue, greater>pq;

注意兩個尖括號之間一定要留空格。

(2)基本操作:和

queue

相同。

(3)自定義:priority_queuepq;

struct node //先按

x公升序,再按y公升序

int x,y;

}; 5、map基本用法  

#include (1

)定義:

mapm;

(2)插入元素:

m[key]=value;

m.insert(make_pair(key,value));

(3)查詢元素:

int i = m[key];注意:當與該鍵值匹配的值不存在時,會建立鍵值為

key的元素對。

map::iterator it = m.find(key);如果

map中存在與

key相匹配的鍵值時,

find

操作將返回指向該元素對的迭代器,否則返回的迭代器等於

map的

end()。

(4)刪除元素:

m.erase(key);刪除與指定

key鍵值相匹配的元素對,並返回被刪除的元素的個數。

m.erase(it);刪除由迭代器

it所指定的元素對,並返回指向下乙個元素對的迭代器。

6、set、

multiset

、map

、multimap

功能相似(以

set為例)

iterators:

begin()  end()  rbegin()  rend()

capacity:

empty  size

modifiers:

insert  erase    clear

swap            set1和

set2互換

operations:

find           //it = set1.find(key)          找到返回下標,否則返回

set1.end()

count          //cnt = set1.count(key)        返回

set1

中 key 

的個數

lower_bound    //it = set1.lower_bound(key)   大於或等於 

key 

的最小值的下標

upper_bound    //it = set1.upper_bound(key)   大於 

key 

的最小值的下標

STL用法總結

在c std map上面用迭代器移除元素 序列性容器 vector erase 迭代器不僅使所有指向被刪元素的迭代器失效,而且使被 刪元素之後的所有迭代器失效,所以不能使用 erase iter 的方 式,但是 erase 的返回值為下乙個有效的迭代器,所以 正確方法為 for iter c.beg...

STL的基本用法

map include 一一對應的對映 函式size count 判斷某元素是否出現 find 定位資料出現位置,返回的是迭代器 iterator erase iterator it 通過乙個條目物件刪除 iterator erase iterator first,iterator last 刪除乙...

STL的set基本用法

set是集合,雖然也存在鍵值和實值,不過兩者根本就是同乙個值,鍵值的設定完全就是為了滿足紅黑樹的底層結構,set操作與map很像不過也有些不同。1 set迭代器與map的不同 1 set使用接引用運算子 取值,而map使用first和second取值。2 set的迭代器都是常量迭代器,不能用來修改所...