vector是向量,可以理解成「變長陣列」,使用前需要新增下列語句
#include using namespace std;
vectorname;//單獨定義
vectorarrayname[arraysize];//定義陣列,相當於二元陣列
name[index]//下標訪問
push_back(i);//在vi後面新增i
pop_back();//刪除末尾元素
size()//獲取vector個數
clear();//清空vector
begin()//首元素位址
insert(it,x);//在it處新增元素x
erase(it);//刪除it處的元素
erase(first.last);//刪除[first,last)的所有元素
可以理解成指標
vector ::iterator it=vi.begin();//定義迭代器it指向首元素位址,此時*it就代表了vi的首元素
set是集合,自動遞增排序,元素互不重複,使用前需要新增標頭檔案
可以用來去重並公升序排序
#include using namespace std;
set name;//單獨定義
setarrayname[arraysize];//定義陣列,陣列中每乙個都是set容器
set只能用迭代器訪問
set::iterator it;//可以通過*it訪問,但不能用*(it+i)
insert(x);//插入x
find(value);//返回值為value的迭代器
erase(it);//刪除迭代器為it的元素
erase(value);//刪除值為value的元素
erase(first,last);//刪除[first,last)區間的元素
clear();//清空所有元素
字串,使用前需新增標頭檔案
字串可以直接通過加法拼接,直接比較大小(字典序)
#include using namespace std;
string str="abc";
str[i]
輸入輸出只能用cin和cout
string::iterator it;
string迭代器支援直接加減某個數字
length()//返回str的長度,即存放的字元數
insert(pos,string);//在pos的位置插入字串string
insert(it,it2,it3);//在it的位置插入字串[it2,it3)
erase(it);//刪除迭代器為it的元素
erase(first,last);//刪除[first,last)區間的元素
erase(pos,length)://刪除從pos開始的length個字元
clear();//清空字串
substr(pos,len)//返回從pos開始長度為len的子串
find(str2)//若str2為子串,返回第一次出現的位置,如果不是,返回string::npos
replace(pos,len,str2);//把從pos開始長度為len的子串替換為str2
replace(it1,it2,str2);//把[it1,it2)替換為str2
map可以將基本型別對映到基本型別,基本型別也可以是stl容器,使用前需新增標頭檔案
可以用來建立字元(串)與整數之間的聯絡,判斷大整數或者其他型別是否存在的題目,把map當bool陣列用
#include using namespace std;
如果是字串到整數的對映必須使用string而不是char
mapmp;
mp[type1]//相當於mp[type2]
map::iterator it;
it ->first//當前對映的鍵
it ->second//當前對映的值
find(key)//返回鍵為key的迭代器
erase(it);//刪除迭代器為it的元素
erase(key);//刪除鍵為key的元素
erase(first,last);//刪除迭代器為[first,last)的元素
size()//對映的對數
clear();//清空
佇列,使用前需新增標頭檔案
#include using namespace std;
queue name;
使用front和back之前要先用empty判斷一下佇列是否為空
front()//隊首元素
back()//隊尾元素
push(x);//將x入隊
pop();//令首元素出列
empty()//檢測queue是否為空,返回true則空,返回false則空
size()//佇列元素個數
優先佇列
先新增和queue一樣的標頭檔案
#include using namespace std;
priority_queuename;
top()//訪問優先順序最高的元素
push(x);//將x入隊
pop();//令隊首元素出隊
empty()//檢測queue是否為空,返回true則空,返回false則非空
size()//佇列元素個數
基本資料型別
一般是數字大的優先順序高,定義如下
priority_queueq;
priority_queue,less> q;//兩者等價
想讓數字小的優先順序大只需
priority_queue,greater> q;
結構體型別
在結構體裡面過載小於號即可
struct fruit
};
這樣之後f1再定義fruit型別的優先佇列,內部就是以**高的水果為優先順序高
也可以把過載函式寫在結構體外面
struct cmp
}priority_queue, cmp> q;//定義
棧,後進先出的容器,使用前需加上標頭檔案
#include using namespace std;
stackname;//定義
top()//訪問棧頂元素
push(x);//將x入棧
pop();//彈出棧頂元素
empty()//返回true則空,返回false則非空
size()//返回元素個數
把兩個元素綁在一起作為乙個合成元素,可以看成有兩個元素的結構體
#include //新增map標頭檔案後會自動新增utility
using namespace std;
pairname(value1,value2);//value為初始化元素
pair.first//訪問第乙個元素
pair.second//訪問第二個元素
兩個pair型別比較是先比較first再比較second
使用前需新增標頭檔案
#include using namespace std;
max(x,y)//返回較大值
min(x.y)//返回較小值
abs(x)//返回絕對值
swap(x,y);//交換x,y的值
reverse(it,it2);//將[it,it2)的元素進行反轉
next_permutation(序列);//給出乙個序列在全排列中的下乙個序列
fill(區間,值);//把某段區間賦為相同的某個值
lower_bound(first,last,val)//尋找在[first,last)範圍內第乙個值大於等於val的位置,如果是陣列則返回指標,如果是容器則返回迭代器,如果沒有要尋找的元素則返回可以插入該元素的指標或迭代器
upper_bound(first,last,val)//尋找在[first,last)範圍內第乙個值大於等於val的位置,如果是陣列則返回指標,如果是容器則返回迭代器,如果沒有要尋找的元素則返回可以插入該元素的指標或迭代器
sort(首元素位址,尾元素位址,比較函式(非必填));;//預設從小到大排序
如果需要從大到小,則需要使用比較函式
bool bmp(int a,int b)
stl容器中,只有vector,string,deque可以用sort 第六章 學習筆記
1.引數分為位置引數和關鍵字引數。def func positional para x,y,z passdef func keyword para kwd1 1,kwd2 4,kwd3 9 pass2.1 當有多個位置引數時,可以用乙個星號來收集引數,函式內使用這些位置引數時可以通過for 迴圈依次...
第六章學習筆記
人員中斷 程序中斷 硬體中斷 程序的陷阱錯誤 按 ctrl c 組合鍵通常會導致當前執行的程序終止。原因如下 ctrl c組合鍵會生成乙個鍵盤硬體中斷。鍵盤中斷處理程式將ctrl c組合鍵轉換為sigint 2 訊號,傳送給終端上的所有程序,並喚醒等待鍵盤輸入的程序。在核心模式下,每個程序都要檢查和...
第六章筆記
頂層const與底層const的區別 頂層const是指標物件本身是乙個常量,而底層const是指標所指的物件是乙個常量,理解起來就相當於前者是直接,後者是間接。宣告函式可以多次,但是每個形參只能用實參預設初始化一次,即後續宣告只可以為未預設初始化的形參新增預設實參,而且其形參右側的所有形參必須都有...