基礎不牢,地動山搖。
map:
提供一對一的hash
- 第一個可以稱爲關鍵字(key),每個關鍵字只能在map中出現一次;
- 第二個可能稱爲該關鍵字的值(value);
自動建立key - value的對應。key 和 value可以是任意你需要的類型。
兩種插入方式:
string s1="hahaha",s2="lalala";
//方法一:使用下標插入
m[s1] = 1;
m[s2] = 2;
//方法二:定義鍵值對
pair<string, int> p1;
p1 = make_pair(s1, 1);
pair<string, int> p2(s2, 2); //直接構造鍵值對
m.insert(p1); //使用insert接口
m.insert(p2);
調用:
map<string, int>::iterator it;
for (it = m.begin(); it != m.end(); it++) { //遍歷
cout << it->first << " " << it->second << endl;
}
find(key) 返回一個迭代器
empty() 判斷map是否爲空。爲空的話返回真。
size() 返回map的長度
clear() 清空
map.count(Key) 檢查key是否存在 (返回值爲1或者0,1返回存在,0返回不存在,返回的是布爾類型的值,因爲在map類型中所有的數據的Key值都是不同的,所以被count的數要麼存在1次,要麼不存在)
vecotr:
reserve和resize是vector裏兩個很重要的方法,有效地使用這兩個方法可以減少reallocate memory的次數,提高程序的性能。(這兩個函數的區別即容器的capacity(容量)與size(長度)的區別)
resize:
- resize(n) 調整容器的長度大小,使其能容納n個元素。如果n小於容器的當前的size,則刪除多出來的元素。否則,添加採用值初始化的元素。
- resize(n,t) 多一個參數t,將所有新添加的元素初始化爲t。
reserve:
- reserve(n) 預分配n個元素的存儲空間。
pair 默認對first升序,當first相同時對second升序;
set:
排好序且無重複
- insert() 插入元素
- begin() 返回set容器第一個元素的迭代器
- end() 返回一個指向當前set末尾元素的下一位置的迭代器.
- clear() 刪除set容器中的所有的元素
- empty() 判斷set容器是否爲空
- size() 返回當前set容器中的元素個數
- count() 用來查找set中某個某個鍵值出現的次數
- find() 返回給定值值得定位器,如果沒找到則返回end()
- lower_bound(key_value) 返回第一個大於等於key_value的定位器
- upper_bound(key_value) 返回最後一個大於等於key_value的定位器
string的部分用法:
https://www.cnblogs.com/lanclot-/p/11142202.html