C++經常使用的數據結構數組
序列式容器數據結構
vector(向量、有序數列),list(雙向鏈表),deque(雙端隊列)函數
適配器容器spa
stack(棧),queue(隊列).net
關聯式容器指針
map(映射、鍵值對二叉樹),set(集合、值二叉樹)對象
vectorblog
初始化排序
函數索引
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
更多http://www.cplusplus.com/reference/stack/stack/
queue
queue 和 stack 有一些成員函數類似,但在一些狀況下,工做方式有些不一樣:
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
更多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);表示休息一秒