常用STL整理 施工中 2017 8 11更新

2022-04-17 09:47:09 字數 4746 閱讀 5402

1.vector

構造

vector v;

基本操作

v.begin()             //指向迭代器中第乙個元素。  

v.end() //指向迭代器中末端元素的下乙個,指向乙個不存在元素。

v.push_back(elem) //在尾部加入乙個資料。

v.pop_back() //刪除最後乙個資料。

v.capacity() //vector可用空間的大小。

v.size() //返回容器中資料個數。

v.empty() //判斷容器是否為空。

v.front() //傳回第乙個資料。

v.back() //傳回最後乙個資料,不檢查這個資料是否存在。

v.at(index) //傳回索引idx所指的資料,如果idx越界,丟擲out_of_range。

v.clear() //移除容器中所有資料。

v.erase(iterator) //刪除pos位置的資料,傳回下乙個資料的位置。

v.insert(position,elem) //在pos位置插入乙個elem拷貝,傳回新資料位置。

v.insert(position,n,elem) //在pos位置插入n個elem資料,無返回值。

v.insert(position,begin,end) //在pos位置插入在[beg,end)區間的資料,無返回值。

2.priority_queue

構造

priority_queueque;                             //採用預設優先順序構造佇列最大值先出隊

priority_queue,greater>que3; //最小值先出隊

priority_queue,less>que4; //最大值先出隊

基本操作

que.empty()   //判斷乙個佇列是否為空

que.pop() //刪除隊頂元素

que.push() //加入乙個元素

que.size() //返回優先佇列中擁有的元素個數

que.top() //返回優先佇列的隊頂元素

3.map

構造

mapmp;

基本操作

mp.begin()          //返回指向map頭部的迭代器

mp.clear() //刪除所有元素

mp.count() //返回指定元素出現的次數

mp.empty() //如果map為空則返回true

mp.end() //返回指向map末尾的迭代器

mp.equal_range() //返回特殊條目的迭代器對

mp.erase() //刪除乙個元素

mp.find() //查詢乙個元素

mp.get_allocator() //返回map的配置器

mp.insert() //插入元素

mp.key_comp() //返回比較元素key的函式

mp.lower_bound() //返回鍵值》=給定元素的第乙個位置

mp.max_size() //返回可以容納的最大元素個數

mp.rbegin() //返回乙個指向map尾部的逆向迭代器

mp.rend() //返回乙個指向map頭部的逆向迭代器

mp.size() //返回map中元素的個數

mp.swap() //交換兩個map

mp.upper_bound() //返回鍵值》給定元素的第乙個位置

mp.value_comp() //返回比較元素value的函式

4.queue

構造

queueq;

基本操作 

q.push(num)   //入列,插入佇列的末端。 

q.empty() //判斷佇列是否為空

q.size() //獲取佇列中的元素個數

q.back() //訪問佇列尾元素

5.stack

構造

stacks;

stackc1(c2); 複製stack

基本操作

s.top()        //返回棧頂資料

s.push(num) //在棧頂插入資料

s.pop() //彈出棧頂資料

s.empty() //判斷棧是否為空

s.size() //返回棧中資料的個數

6.set

構造

sets;

基本操作

s.insert(num)             //把元素插入到集合中,同一元素不會重複插入

s.inset(first,second) //將定位器first到second之間的元素插入到set中,返回值是void

s.erase(6) //刪除鍵值為6的元素

s.find(6) //查詢鍵值為6的元素,如果沒找到則返回end()

s.begin()   //返回set容器的第乙個元素

s.end()      //返回set容器的最後乙個元素

s.clear()    //刪除set容器中的所有的元素

s.empty()     //判斷set容器是否為空

s.max_size()   //返回set容器可能包含的元素最大個數

s.size()      //返回當前set容器中的元素個數

s.rbegin()     //返回的值和end()相同

s.rend()     //返回的值和rbegin()相同

s.count() //用來查詢set中某個某個鍵值出現的次數,一般用於判斷某一鍵值是否在set出現過

erase(iterator) //刪除定位器iterator指向的值

erase(first,second) //刪除定位器first和second之間的值(不包括second)

erase(key_value) //刪除鍵值key_value的值

lower_bound(key_value) //返回第乙個大於等於key_value的定位器

upper_bound(key_value) //返回最後乙個大於等於key_value的定位器

7.deque

構造

dequec;

dequec1(c2); //複製deque

dequec(n, elem); //建立乙個含有n個elem拷貝的deque

基本操作

c.assign(beg, end);  //將beg-end區間中的值賦值給c

c.assign(n, elem); //將n個elem的拷貝賦值給c

c.at(idx); //返回idx位置所指資料

c.front(); //返回第乙個資料

c.back(); //返回最後乙個資料

c.begin(); //返回指向第乙個資料的迭代器

c.end(); //返回指向最後乙個資料的下乙個位置的迭代器

c.rbegin(); //返回逆向佇列的第乙個資料

c.rend(); //返回指向逆向佇列的最後乙個資料的下乙個位置的迭代器

c.push_back(elem); //在尾部加入乙個資料

c.push_front(elem); //在頭部插入乙個資料

c.insert(pos, elem); //在pos位置插入乙個elem拷貝,返回新資料位置

c.insert(pos, n, elem); //在pos位置插入n個elem資料,無返回值

c.insert(pos, beg, end); //在pos位置插入在beg-end區間的資料,無返回值

c.pop_back(); //刪除最後乙個資料

c.pop_front(); //刪除頭部資料

c.erase(pos); //刪除pos位置的資料,返回下乙個資料的位置

c.erase(beg, end); //刪除beg-end區間的資料,返回下乙個資料的位置

c.empty(); //判斷容器是否為空

c.max_size(); //返回容器中最大資料的數量

c.resize(num); //重新指定佇列的長度

c.size(); //返回容器中實際資料的個數

c1.swap(c2) //將c1和c2元素互換

常用 STL 整理

vector 可變長陣列,變長是基於倍增的思想 系統為某乙個程式分配空間時,有乙個特點,他所需的時間基本上與空間大小無關,只與申請次數有關 即 100 和 1000 沒區別,只和請求次數有關 因此,vector的優化目標是,減少申請的次數 優化時間,可以浪費空間 起初先申請乙個 小的空間 例如32 ...

STL中bitset的用法的整理

建構函式 bitsetb b有n位,每位都為0.引數n可以為乙個表示式.如bitset 5 b0 則 b0 為 00000 bitsetb unsigned long u b有n位,並用u賦值 如果u超過n位,則頂端被截除 如 bitset 5 b0 5 則 b0 為 00101 bitsetb s...

C 中STL常用演算法概要

stl演算法部分主要由標頭檔案 組成。要使用其中的演算法必須包含標頭檔案,其中是數值演算法,則用於定義一些模板類,宣告函式物件。現在將stl演算法大致分為四類進行介紹 1 非可變序列演算法 指不直接修改其所操作的容器內容的演算法。2 可變序列演算法 指可以修改它們所操作的容器內容的演算法。3 排序演...