STL經常使用結構與方法簡明總結

C++經常使用的數據結構數組

序列式容器數據結構

vector(向量、有序數列),list(雙向鏈表),deque(雙端隊列)函數

適配器容器spa

stack(棧),queue(隊列).net

關聯式容器指針

map(映射、鍵值對二叉樹),set(集合、值二叉樹)對象

 

vectorblog

初始化排序

  • vector():建立一個空vector
  • vector(int nSize):建立一個vector,元素個數爲nSize
  • vector(int nSize,const t& t):建立一個vector,元素個數爲nSize,且值均爲t
  • vector(const vector&):複製構造函數
  • vector(begin,end):複製[begin,end)區間內另外一個數組的元素到vector中

函數索引

push_back 在數組的最後添加一個數據

pop_back 去掉數組的最後一個數據

at 獲得編號位置的數據

begin 獲得數組頭的指針

end 獲得數組的最後一個單元+1的指針

front 獲得數組頭的引用

back 獲得數組的最後一個單元的引用

max_size 獲得vector最大能夠是多大

capacity 當前vector分配的大小

size 當前使用數據的大小

resize 改變當前使用數據的大小,若是它比當前使用的大,者填充默認值

reserve 改變當前vecotr所分配空間的大小

erase 刪除指針指向的數據項

clear 清空當前的vector

rbegin 將vector反轉後的開始指針返回(其實就是原來的end-1)

rend 將vector反轉構的結束指針返回(其實就是原來的begin-1)

empty 判斷vector是否爲空

swap 與另外一個vector交換數據

更多http://www.cplusplus.com/reference/vector/vector/

 

list

不支持根據下標隨機存取元素,利用迭代器遍歷

初始化

    list<int>lst1;          //建立空list
    list<int> lst2(5);       //建立含有5個元素的list
    list<int>lst3(3,2);  //建立含有3個元素的list
    list<int>lst4(lst2);    //使用lst2初始化lst4
    list<int>lst5(lst2.begin(),lst2.end());  //同lst4

函數

Lst1.assign() 給list賦值
Lst1.back() 返回最後一個元素
Lst1.begin() 返回指向第一個元素的迭代器
Lst1.clear() 刪除全部元素
Lst1.empty() 若是list是空的則返回true
Lst1.end() 返回末尾的迭代器
Lst1.erase() 刪除一個元素
Lst1.front() 返回第一個元素
Lst1.get_allocator() 返回list的配置器
Lst1.insert() 插入一個元素到list中
Lst1.max_size() 返回list能容納的最大元素數量
Lst1.merge() 合併兩個list
Lst1.pop_back() 刪除最後一個元素
Lst1.pop_front() 刪除第一個元素
Lst1.push_back() 在list的末尾添加一個元素
Lst1.push_front() 在list的頭部添加一個元素
Lst1.rbegin() 返回指向第一個元素的逆向迭代器
Lst1.remove() 從list刪除元素
Lst1.remove_if() 按指定條件刪除元素
Lst1.rend() 指向list末尾的逆向迭代器
Lst1.resize() 改變list的大小
Lst1.reverse() 把list的元素倒轉
Lst1.size() 返回list中的元素個數
Lst1.sort() 給list排序
Lst1.splice() 合併兩個list
Lst1.swap() 交換兩個list
Lst1.unique() 刪除list中重複的元素

更多http://www.cplusplus.com/reference/list/list/

 

deque

初始化

deque deqT; 默認構造形式
deque(beg, end); 將[beg, end)區間中的元素拷貝給自己。
deque(n, elem); 將n個elem拷貝給自己。
deque(const deque &deq); 拷貝構造函數。

函數(原文https://blog.csdn.net/claroja/article/details/88966715

assign(beg, end); 將[beg, end)區間中的數據拷貝賦值
assign(n, elem); 將n個elem拷貝賦值
deque& operator=(const deque &deq); 重載等號操做符
swap(deq); 縮減容量
deque.size(); 元素個數
deque.empty(); 是否爲空
deque.resize(num); 設置deque大小,多餘默認填充,少於刪除
deque.resize(num, elem); 設置deque大小,多餘elem填充,少於刪除
push_back(elem); 尾部添加
push_front(elem); 頭部添加
pop_back(); 尾部刪除
pop_front(); 頭部刪除
at(idx); 索引,拋出異常
operator[]; 索引,報錯
front(); 返回第一個數組
back(); 返回最後一個數據
insert(pos,elem); pos位置插入elem
insert(pos,n,elem); pos位置插入n個elem
insert(pos,beg,end); pos位置插入[beg,end)區間的數據
clear(); 清空容器
erase(beg,end); 刪除[beg,end)區間的數據,返回下一個數據的位置。
erase(pos); 刪除pos位置的數據,返回下一個數據的位置

更多http://www.cplusplus.com/reference/list/list/

 

stack

  • top():返回一個棧頂元素的引用,類型爲 T&。若是棧爲空,返回值未定義。
  • push(const T& obj):能夠將對象副本壓入棧頂。這是經過調用底層容器的 push_back() 函數完成的。
  • push(T&& obj):以移動對象的方式將對象壓入棧頂。這是經過調用底層容器的有右值引用參數的 push_back() 函數完成的。
  • pop():彈出棧頂元素。
  • size():返回棧中元素的個數。
  • empty():在棧中沒有元素的狀況下返回 true。
  • emplace():用傳入的參數調用構造函數,在棧頂生成對象。
  • swap(stack<T> & other_stack):將當前棧中的元素和參數中的元素交換。參數所包含元素的類型必須和當前棧的相同。對於 stack 對象有一個特例化的全局函數 swap() 可使用。

更多http://www.cplusplus.com/reference/stack/stack/

 

queue

queue 和 stack 有一些成員函數類似,但在一些狀況下,工做方式有些不一樣:

  • front():返回 queue 中第一個元素的引用。若是 queue 是常量,就返回一個常引用;若是 queue 爲空,返回值是未定義的。
  • back():返回 queue 中最後一個元素的引用。若是 queue 是常量,就返回一個常引用;若是 queue 爲空,返回值是未定義的。
  • push(const T& obj):在 queue 的尾部添加一個元素的副本。這是經過調用底層容器的成員函數 push_back() 來完成的。
  • push(T&& obj):以移動的方式在 queue 的尾部添加元素。這是經過調用底層容器的具備右值引用參數的成員函數 push_back() 來完成的。
  • pop():刪除 queue 中的第一個元素。
  • size():返回 queue 中元素的個數。
  • empty():若是 queue 中沒有元素的話,返回 true。
  • emplace():用傳給 emplace() 的參數調用 T 的構造函數,在 queue 的尾部生成對象。
  • swap(queue<T> &other_q):將當前 queue 中的元素和參數 queue 中的元素交換。它們須要包含相同類型的元素。也能夠調用全局函數模板 swap() 來完成一樣的操做。

 

map

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

     clear()        刪除全部元素

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

     empty()         若是map爲空則返回true

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

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

     erase()         刪除一個元素

     find()          查找一個元素

     get_allocator() 返回map的配置器

     insert()        插入元素

     key_comp()      返回比較元素key的函數

     lower_bound()   返回鍵值>=給定元素的第一個位置

     max_size()      返回能夠容納的最大元素個數

     rbegin()        返回一個指向map尾部的逆向迭代器

     rend()          返回一個指向map頭部的逆向迭代器

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

     swap()           交換兩個map

     upper_bound()    返回鍵值>給定元素的第一個位置

     value_comp()     返回比較元素value的函數

更多http://www.cplusplus.com/reference/map/map/

 

set

  1. begin() 返回指向第一個元素的迭代器
  2. clear() 清除全部元素
  3. count() 返回某個值元素的個數
  4. empty() 若是集合爲空,返回true(真)
  5. end() 返回指向最後一個元素以後的迭代器,不是最後一個元素
  6. erase() 刪除集合中的元素
  7. find() 返回一個指向被查找到元素的迭代器
  8. insert() 在集合中插入元素
  9. max_size() 返回集合能容納的元素的最大限值
  10. size() 集合中元素的數目
  11. swap() 交換兩個集合變量

 更多http://www.cplusplus.com/reference/set/set/

 

C++的:: 是做用域,若是想在類的外部引用靜態成員函數,或在類的外部定義成員函數都要用到。使用命名空間裏的類型或函數也要用到(如:std::cout, std::cin, std::string 等等)

 

起個別名

typedef list<int> LISTINT;

LISTINT list;

 

咱們導入window.h使用Sleep()方法,注意:第一個S要大寫,括號中的表示的整數倍的毫秒

Sleep(1000);表示休息一秒

相關文章
相關標籤/搜索