演算法筆記 第六章STL模板

2021-10-08 07:29:09 字數 2979 閱讀 1629

char* 和char: 區別

賦值:過載運算符號 = | str.assign();

查詢:str.find() | str.rfind()

string s = 「abca」;

if(s.find(『v』 != s.npos) //v不存在於s串中

替換:str.replace()

比較:s1.compare(s2) s1=s2 return 0;

訪問:str[i] | str.at(i)

插入:str.insert(i, s1)

刪除:str.erase(i, len)

子串:str.substr(i, len)

vectorv;

初始化

一維:vectorexample(len,num); //初始化長度 len;填充元素 num / 預設 0 ;

二維:vector> example(10, vector(8)); //10行8列,全部初始化為零

賦值:v.assign() | v() | v.push_back()

訪問:vector::iterator it = v.begin(); it != v.end(); it++; *it進行訪問| v.at(i) | v[i] | v.front() | v.back()

容量:v.empty() | v.capacity()

empty和capacity區別

大小:v.resize(len, element)

插入:v.insert() | v.push_back()

刪除:v.erase() | v.pop_back() | v.clear()

互換:v1.swap(v2) | vector(v).swap(v)巧用匿名物件收縮記憶體

預留記憶體(沒有初始化):v.reserve()

deque

dequed;

兩端插入:d.push_front() | d.push_back()

兩端刪除:d.pop_front() | d.pop_back()

stack

stackst;

插入:st.push();

讀取棧頂:st.top();

刪除棧頂:st.pop();

queue

queueq;

插入:q.push();

讀取:q.front() | q.back()

刪除:q.pop()

list與vector區別

listlst;

賦值:lst.assign() | lst1=lst2

交換:lst.swap()

訪問:list::iterator it = lst.begin(); it != lst.end(); it++; *it進行訪問容量:lst.empty() | lst.size()

大小:lst.resize(len, element)

(兩端)插入:lst.push_front() | lst.push_back() | lst.insert()

(兩端)刪除:lst.pop_front() | lst.pop_back() | lst.erase() | lst.remove(element) | lst.clear()

訪問:lst.front() | lst.back()

反**lst.reverse()

排序: lst.sort()

unordered_set 無序set

set st;

訪問:set::iterator it = st.begin();it != st.end(); it++; *it進行訪問insert(x):插入x並自動排序去重

find(val):返回val值對應的迭代器erase(it):刪除單個元素,結合find()使用st.erase(st.find(val));刪除區間

其他:size();clear();

map mp;

訪問:下標 mp[『a』] | 迭代器 it->first訪問鍵 ,it->second訪問值

賦值:mp[『a』] = 10;

find(key):返回鍵值為key的迭代器

erase():erase(it)刪除it的迭代器 | erase(key)刪除key值對應的迭代器

訪問:top

入隊:push

出隊:pop

第二個引數:堆的容器

第三個引數:對第乙個引數的比較方法

構建:pairp(「haha」, 5) | make_pair(「haha」, 5)

訪問:p->first & p->second

比較:先比較first,first相等比較second

pair作為map的鍵值進行插入:mp.insert(make_pair(「haha」, 5)) 用it->first訪問鍵,it->second訪問值

max() | min() | abs() :兩個引數

fabs()標頭檔案:math

swap() 交換x和y的值

reverse(it_begin(), it_end()):區間內元素 (迭代器) 反轉[ , )

fill(it_begin(), it_end(), val):區間內元素置數[ , )

sort(it_begin, it_end, cmp):(預設公升序)排序、map和set不能用

next_permutation() :下乙個全排列中的序列

lower_bound() | upper_bound() :對有序陣列或者容器進行

常用的容器中迭代器種類為雙向迭代器,和隨機訪問迭代器

演算法筆記第六章總結 STL

標頭檔案 include 定義 動態陣列 vector內元素的訪問 以vector int name為例 vector int iterator it name.begin name i it i 常用函式 push back 在vector最後新增元素。o 1 pop back 刪除vector的...

第六章筆記

頂層const與底層const的區別 頂層const是指標物件本身是乙個常量,而底層const是指標所指的物件是乙個常量,理解起來就相當於前者是直接,後者是間接。宣告函式可以多次,但是每個形參只能用實參預設初始化一次,即後續宣告只可以為未預設初始化的形參新增預設實參,而且其形參右側的所有形參必須都有...

c 第六章 模板

1 函式模板 template t add t a,t b return a b 隱式呼叫 add 5,6 顯示呼叫 add 5,6 模板之間可以構成過載,模板與普通函式之間也可構成過載,呼叫順序如下 跟某一普通的引數完全匹配,呼叫之,跟函式模板的引數可以完全匹配 隱式呼叫 呼叫之,跟函式模按引數不...