六種順序容器
iterator range
called left-inclusive interval
[begin,end)
標準庫 array 的大小也是型別的一部分。定義一個 array ,除了指定元素型別,還要指定容器大小
array 支援拷貝初始化,但必須陣列型別匹配
array 不支援 assign, 也不能列表賦值
可以將const char* 轉換爲 string
順序容器操作
push_back() emplace_back()
push_front() emplace_front()
insert(iterator,t) emplace(iterator,args) 在迭代器指向的元素之前建立一個值爲t或由args建立的元素。返回指向新新增元素的迭代器
insert(p,n,t) 在迭代器指向的元素之前建立 n 個值爲 t 元素。返回指向新新增元素的迭代器
insert(p,b,e) 將迭代器 b 和 e 指定範圍中的元素插入到迭代器p所指之前。
insert(p,il) 將il列表中的元素值插入迭代器p指向的元素之前。返回新新增的第一個元素的迭代器;列表空則返回p
erase()
插入後返回插入的第一個的迭代器
刪除後返回刪除的後一個的迭代器
back() front() [n] atn返回參照
forward_list
before_begin()
insert_after()
erase_after()
change the size of the container
resize(n) resize(n,t)(the value of the new-added element is t)
container-size manage
shrink_to_fit() (使capacity()等於size())//only for vector string deque
capacity() (不重新分配記憶體空間的話,可以儲存多少元素)//only for vector string
reserve(n) (設定下次分配至少容納n個元素的記憶體空間)//only for vector string超出後恢復預設增長方式
參數
args
詳見P323
構造 string 的其他方法
P321
append //後置新增
insert
assign //替換
replace(需要詳查)(前兩個參數確定範圍,後一個參數爲形參列表)
s.replace(range,args)
返回指向 s 的參照
substr
返回一個 string
可以傳遞一個可選的開始位置和計數值()
整體查詢
字元查詢
args
adaptor
對接容器,統一操作
stack //based on deque
queue //based on deque
priority_queue //based on vector
所有適配器都要求容器具有新增、刪除以及存取尾元素的能力
stack
std::vector<int>vi;
std::stack<int>svi(vi);//將vi拷貝到svi
std::stack<int,std::vector<int>>empty_svi;//建立空棧
std::stack<int>si;//建立空棧
s.pop() 刪除棧頂元素,但不返回該元素值
s.push() 建立新元素壓入棧頂,該元素通過拷貝或移動item而來,或者由args構造
s.emplace(args)
s.top() 返回棧頂元素,但不將元素彈出棧
queue
(first-in,first-out)FIFOq.pop() 刪除queue首元素或者priority_queue的最高優先順序元素
q.front() 返回首元素,不刪除only for queue
q.back() 返回尾元素,不刪除only for queue
q.top() 返回最高優先順序元素,但不刪除該元素only for priority_queue
q.push()
q.emplace() 可以當q.push()用