STL階段性總結

2021-10-05 13:51:24 字數 2430 閱讀 9399

stl:

vector容器的建構函式:

vector():建立乙個空vector

vector(int nsize):建立乙個vector,元素個數為nsize

vector(int nsize,const t& t):建立乙個vector,元素個數為nsize,且值均為t

vector(const vector&):複製建構函式

vector(begin,end):複製[begin,end)區間內另乙個陣列的元素到vector中

map/multimap:可以做對映,對於操作類有很大幫助,,pair可以生成鍵值對。

vector:類似於動態陣列,支援訪問,更好的乙個方面是,如果遇到空間不足,可以自動追加空間;

set/multiset:集合,快速查詢時可使用,set與map很相似,沒有關鍵字,不可進行下標操作;

演算法演算法中常用到的兩個引數是一對迭代器[frist,las),用來表示容器的範圍。

sort是用來排序地乙個演算法;

find: 利用底層元素的等於操作符,對指定範圍內的元素與輸入值進行比較。當匹配時,結束搜尋,返回該元素的乙個iterator。

find_end: 在指定範圍內查詢"由輸入的另外一對iterator標誌的第二個序列"的最後一次出現。找到則返回最後一對的第乙個iterator,否則返回輸入的"另外一對"的第乙個iterator。過載使用使用者輸入的操作符代替等於操作。

find_first_of: 在指定範圍內查詢"由輸入的另外一對iterator標誌的第二個序列"中任意乙個元素的第一次出現。也可以自擬定操作符。

二分查詢使用之前必須前對容器進行排序,每次查詢都是隨機的。

count: 利用等於操作符,把標誌範圍內的元素與輸入值比較,返回相等元素個數。

count_if: 利用輸入的操作符,對標誌範圍內的元素進行操作,返回結果為true的個數。

函式呼叫:

push_back()           在陣列的最後新增乙個資料

pop_back()            去掉陣列的最後乙個資料

at()                  得到編號位置的資料

begin()              得到陣列頭的指標

end()                 得到陣列的最後乙個單元+1的指標

6.front()               得到陣列頭的引用

back()                得到陣列的最後乙個單元的引用

max_size()            得到vector最大可以是多大

capacity()            當前vector分配的大小

10.size()                當前使用資料的大小

11.resize()              改變當前使用資料的大小,如果它比當前使用的大,者填充預設值

set_union: 構造乙個有序序列,包含兩個序列中所有的不重複元素。過載版本使用自定義的比較操作。set_intersection: 構造乙個有序序列,其中元素在兩個序列中都存在。過載版本使用自定義的比較操作。set_difference: 構造乙個有序序列,該序列僅保留第乙個序列中存在的而第二個中不存在的元素。過載版本使用自定義的比較操作。set_symmetric_difference: 構造乙個有序序列,該序列取兩個序列的對稱差集(並集-交集)。

使用時注意包含標頭檔案    std::set and std::multiset associative containers

set容器常用操作

s.begin()      返回set容器的第乙個元素

s.end()      返回set容器的最後乙個元素

s.clear()       刪除set容器中的所有的元素

s.empty()     判斷set容器是否為空

s.insert()      插入乙個元素

s.erase()       刪除乙個元素

s.size()     返回當前set容器中的元素個數

普通查詢:構造map對映來查詢,這及解決了查詢時間問題,又緩解了將借閱記錄存放在resder,與book裡各乙份地問題,減少了空間地使用,但是在刪除操作中,必須將map清空後重新構建。

pair< multimap::iterator,multimap::iterator> range;

range=sno_record.equal_range(sno);1

模糊查詢:在模糊查詢中用到了find_if(),這個可以自定義篩選函式,有時會用到篩選類,這裡的我還用到了的時判斷字串的子串

體會:在學習stl以及實踐的過程中,理解到學好c++是真的不容易,也了解到自己欠缺的東西,然而在這次實驗,也有很多知識點明明理解,但操作時候卻實現的相當困難,查閱了一些資料,最後回顧老師講過的東西,到頭來發現其實這些問題也沒有想象中那麼的難,有時候聽了新的知識,就沒有及時鞏固以前的,再寫**時候還是用不上,效率太低,以後還要多強化自己。

階段性總結

今天聽學長交流了一些人生的經驗,便有了一些感觸,加上對自己最近的學習狀態的總結,就寫一篇部落格給自己一點指示。最近渾渾噩噩的,有幾次考試也沒考好,考後也沒總結。晚自習本想刷一些題,複習一下,或是學習一點技術。看見其他同學在打擺,便動搖了。最後心中也只是徒留深深的罪惡感。所以我也是時候對自己的未來進行...

階段性總結

感覺上個星期還挺痛苦的,因為要練演算法,每個人都告訴我說演算法很重要很重要,但是演算法對我來說就像是一根很亂的神經,一觸就炸了,可我的驕傲還不允許我放棄。在leetcode上練習的時候是直接告訴用什麼方法,在寫藍橋杯演算法的時候就像是閱讀理解,經常讀不懂是什麼意思,要不就是理解錯誤,追根究底還是做的...

自考階段性總結

週六日這兩天的自學考試就這樣隨著落日再是告一段落,這是自己經歷的第三次自考。就著這一步走來的歷程著實令人緊張而又亢奮的,一次次的考試,乙個個課程的考試,讓我們朝著自考畢業證更進一步。總體而言,自學考試的經歷實在難稱完美。頓時轉折自己的學習需要不斷總結,需要針對這一屆的學習方法來個總結,思考這樣的學習...