stl的知識學完了,明天的演算法課就要講貪心演算法了。在這一段stl學習中,我逐漸掌握了stl模板的使用,的確很方便,也很讓人依賴。
題目需要思考,知識需要理解。
vj上的題目沒做幾道,多數是用sort,vector,set做的,很多不會的題目。我總結這個不會有兩個因素:閱讀英語材料不是很適應和解題和**實現沒清晰思路。掌握了stl也不會做只是說明知識和思維方法還有很多沒掌握的,**敲的太少。可以說,對於複雜的演算法題目,我是有一些畏難心理的。
不應該這樣,既然選擇了這樣一條路,就應該只顧風雨兼程。
前面的幾篇部落格已經總結完了stl的知識,對於map和優先佇列的知識,我掌握的不好,不會用在題目裡。下面著重總結一下:
map標頭檔案: #include map_name;
如:map m;//預設按string由小到大排序
操作:m.size() 返回容器大小
m.empty() 返回容器是否為空
m.count(key) 返回鍵值等於key的元素的個數
m.lower_bound(key) 返回鍵值等於key的元素的第乙個可安插 的位置
m.upper_bound(key) 返回鍵值等於key的元素的最後乙個可安 插的位置
操作:m.begin() 返回乙個雙向迭代器,指向第乙個元素。
m.end() 返回乙個雙向迭代器,指向最後乙個元素的下乙個 位置。
m.clear() 講整個容器清空。
m.erase(elem) 移除鍵值為elem的所有元素,返回個數,對 於map來說非0即1。
m.erase(pos) 移除迭代器pos所指位置上的元素。
直接元素訪問:
m[key] = value;
查詢的時候如果沒有鍵值為key的元素,則安插乙個鍵值為key的新元素,實值為預設(一般0)。
操作:m.insert(elem) 插入乙個元素elem
a)運用value_type插入
mapm;
m.insert(map:: value_type (「robin」, 22.3));
b) 運用pair<>
m.insert(pair(「robin」, 22.3));
c) 運用make_pair()
m.insert(make_pair(「robin」, 22.3));
#include #include #include using namespace std;
int main()else
優先佇列
標頭檔案: #include
定義:priority_queue priority_queue_name;
如:priority_queue q;//預設是大頂堆
操作:q.push(elem) 將元素elem置入優先佇列
q.top() 返回優先佇列的下乙個元素
q.pop() 移除乙個元素
q.size() 返回佇列中元素的個數
q.empty() 返回優先佇列是否為空
#include #include #include using namespace std;
#define pow2(a) ((a)*(a))
#define dist2(x, y) (pow2(x) + pow2(y))
struct coord
};int main()
STL知識總結
最近學了個c 標準模板庫,名字叫做stl,個人感覺比較實用,但也是不太好理解。其他滿分,真的型別全,範圍廣,最最重要的一點是極為方便。一 什麼是stl 1 stl是c 標準程式庫的核心,深刻影響了標準程式庫的整體結構,它由一些可適應不同需求的集合類,以及在這些資料集合上操作的演算法構成,stl內的所...
HTML css重要知識點總結
base元素 a元素的錨點鏈結 a元素和img元素結合 letter word spacing text transform 不常用 text indent text align font family font weight font style font varient 不常用 line hei...
STL不熟知識點總結
在前面已經總結了stl基本知識點的應用,本篇部落格我將主要總結一下自己對stl這一方面不熟的知識點。一.用迭代器遍歷map中的元素 訪問標準容器的元素的通用方法是使用迭代器 for map iterator it b.begin it b.end it 2.it first 表示用迭代器指向map中...