操作:
1. swap(c1,c2)或c1.swap(c2):交換c1和c2中元素,c1和c2型別必須相同,它比c2向c1拷貝元素快得多。
2. seq.assign(b,e)將seq中的元素替換為迭代器b和e表示範圍內的元素。seq.assign(n,t)將seq中的元素替換為n個t。assign操作不適合關聯容器和array。
3. c.push_back(t),c.emplace_back(args)
4. c.push_front(t),c.emplace_front(args)
5. c.insert(p,i),c.emplace(p,args),c.insert(p,n,t),c.insert(p,b,e),c.insert(p,il)
6. c.pop_back()
7. c.pop_front()
8. c.erase(p):刪除迭代器p所指定的元素;c.erase(b,e);c.erase()刪除所有元素。
9. li.resize(15);改變容器大小。 一.
1. vector表示物件的集合,vector是類模板。不存在包含引用的vector。
#inclue
using std::vector;
2. 如果迴圈體內包含有vector物件新增元素的語句,則不能使用範圍for迴圈。範圍
for語句體內不應該改變其遍歷序列的大小。
3. size()函式返回型別為:vector::size_type
4. 新增元素push_back();
void vectortest();
for(int i=6; i<11 ; i++)
v.push_back(i);
for(auto&c:v)
cout< }
二. 1.固定大小陣列。支援快速隨機訪問,不能新增或刪除元素。
2. 內建陣列不能進行拷貝或物件賦值,但是array無此限制。
3.例子:
void arraytest();
cout< }
三.1.雙端佇列,在頭尾刪除或插入速度都很快。在中間位置刪除或插入代價很大。
2.例子:
void dequetest();
de.push_back(8);
de.push_back(9);
de.pop_front();
for(auto&c:de)
cout<
cout< }
四.1.雙向鍊錶,在任何位置刪除或插入都很快。不支援元素的隨機訪問,為了訪問乙個元素,需要遍歷整個鍊錶。與vector、deque、array相比,其記憶體開銷很大。
2.例子:刪除所有基數元素。
void listtest();
li.push_front(2);
li.push_front(1);
li.push_back(8);
li.push_back(9);
cout<<"list中元素為:"<
for(auto &c:li)
cout<
cout<
auto it = li.begin();
while(it !=li.end())
if(*it %2)
it =li.erase(it);
else
++it;
cout<<"list刪除基數元素為:"<
for(auto &c:li)
cout<
cout< }
五. 1.單向鍊錶,在任何位置刪除或插入速度很快。與vector、deque、array相比,其記憶體開銷很大。
2.其沒有size操作,因為儲存或計算其大小就會比手寫鍊錶多出額外的開銷。
void forward_listtest();
auto prev =flist.before_begin();
auto curr =flist.begin();
while(curr !=flist.end()) }
cout<<"刪除基數元素後為:"<
for(autoc:flist)
cout<
cout< }
stl 2 初始容器迭代器演算法
include std cout std endl 螢幕輸出需要的標頭檔案 include vector容器和vector迭代器需要的標頭檔案 include for each演算法需要的標頭檔案 宣告乙個for each演算法需要用到的 函式 void myprint int v int main...
王小明學STL2
大叔!你騙我。王小明找上了大叔,憤憤不平。我怎麼騙你了?大叔正無聊地翻著一本早被翻爛的書。你騙我用stl,我去網上查了,很多人都說stl慢!慢的很 你是怎麼知道他慢的?你昨天不是教我用vector嗎?我回去用陣列和它比較了一下,發現比陣列插入的速度慢了好多!你是怎麼試驗的?你看,我是這樣寫的。說著,...
stl容器之順序容器
stl容器分為順序容器和關聯容器 其中順序容器最常用的由vector,list,queue 1.vector vector 向量容器,可以看作變長陣列,長度可根據需要自行變化。使用的標頭檔案 include 定義方式 vector陣列名 vectorar 訪問容器內資料的方式和普通陣列相同,可以用a...