1.vector 定義:vectorname;
typename 表示可以是任何基本型別,int, doubel, char, 結構體,也可以是stl標準容器,例如vector, set, queue 等。
例如:vector> name;相當於乙個二維陣列只不過這個是變長的。
2.vector 容器內元素的訪問;一般有兩種形式@1:下標訪問,@2:通過迭代器訪問。
迭代器(iterator)可以理解為一種類似指標的東西,定義:vector::iterator it;可以通過*it來訪問vector裡面的元素。
int main()
vector::iterator it = v.begin();
for(int i = 0; i < 5; i++)
printf("\n");
for(int i = 0; i < 5; i++)
printf("\n");
for(vector::iterator it = v.begin(); it != v.end(); it++)
return 0;
}
在常用stl容器中,只有在vector和string中,才允許使用v.begin() + 3這種迭代器加上整數的寫法。
int main()
v.insert(v.begin() + 2, -1); //用來向vector的任意迭代器it插入乙個元素x,時間複雜度o(n)
用來刪除vector尾元素。size()獲得vector中元素個數
//erase()有兩種用法,刪除單元格,刪除乙個區間[)的所有元素,時間複雜度為o(n)
+ 3);
//for(int i = 0;i < v.size(); i ++)
v.erase(v.begin()+1,v.begin()+2);
for(int i = 0;i < v.size(); i ++)
printf("\n");
清空vector中所有元素
//printf("%d\n",v.size());
return 0;
}
set的常見用法:
set的定義:setname;定義賀vector的一樣。大部分stl都是這樣定義的。
set元素的訪問;由於除開vector和string之外的stl容器都不支援*(it+i)的訪問形式。
int main()
printf("\n");
//find()函式返回set中對應為value的迭代器,時間複雜度為olog(n)
printf("%d\n",*(s.find(5)));
//erase()函式有兩種用法:刪除單個元素,刪除乙個區間內的所有元素;
//刪除單個元素有兩種方法刪除迭代器,或者直接刪除value.
//區間刪除[);
//size()返回set內元素的個數。時間複雜度o(1)
printf("%d\n",s.size());
s.erase(s.find(3),s.end());
for(set:: iterator it = s.begin(); it != s.end(); it++)
printf("\n");
//clear()清空set的所有元素時間複雜度o(n)
s.clear();
printf("%d\n",s.size());
return 0;
}
使用find函式要判斷元素是否存在只是要使用迭代器:
sets;
for(int i = 1; i <= 5; i++)s.insert(i);
set::iterator iter;
iter = s.find(5);
if(iter!=s.end())else
set中元素是唯一的,如果需要處理不唯一的情況,則可以使用multiset。另外還增加了unordered_set,以雜湊表代替set內部的紅黑數。可以用來處理只去重不排序的需求,速度比set快的多。
string的常見用法:
string的定義:string str;
int main()
在這裡主要說明find()函式和string::npos的使用;
int main()
//if(str.find(str2,7) != string::npos)
//replace()
//replace(pos,len,str2)把str從pos位置開始。長度為len的子串替換為str2.
//replace(it1,it2,str2)把str的迭代器[it1,it2)範圍的子串替換為str2;時間複雜度為o(str.length())
string str = "maybe you will turn around";
string str2= "will not";
string str3 = "surely";
cout << str.replace(10, 4, str2) << endl;
cout << str.replace(str.begin(),str.begin()+5,str3) << endl;
return 0;
}
STL常見用法整理 remove if
remove if 操作是把符合要求的放在容器的末尾,而不是直接刪除。說明 remove if 演算法從範圍移除所有元素 首先,最後乙個 導致謂詞以返回 true。它返回乙個迭代器等於最後乙個 n,其中 n 移除的元素數。該範圍的最後乙個的 n 個元素具有未定義值。容器的大小保持不變。主要是 rem...
STL中佇列queue的常見用法
一 queue 佇列 簡介 佇列也是一種邏輯資料結構,其具有先進先出的特性,只能在隊的前端進行刪除,在隊的後端進行插入。針對這種特性,可以實現一些較為複雜的邏輯。在實際應用中,部分程式也正需要這樣一種順序進出的資料處理方式。使用這樣的邏輯處理方式,使得我們可以將更多精力放在如何處理順序邏輯之外的事情...
STL之pair常見用法詳解
摘自胡凡的 演算法筆記 僅作記錄用!前言 一 pair的定義 pair有兩個引數,分別對應first和second的資料型別,它們可以是任意基本資料型別或容器,可以使用pairname 定義乙個pair型別。如果想要在 中令是構建乙個pair,有如下兩種方法 二 pair容器內元素的訪問 pair中...