1、什麼是 map,他跟 vector 和 list 有什麼區別?什麼情況下使用 map?
map提供的是一種鍵值對的容器,裡面的資料元素都是成對出現的,即:key-value,在知道 key 的情況下能迅速的找到 value,他們是一一對應的關係。
如下圖:第乙個值稱之為關鍵字(key),每個關鍵字只能在map中出現一次,是唯一的;第二個稱之為該關鍵字的對應值:
例如:學校中的學生,用學生的什麼資訊作為 key 呢?可以用學號,在校的學生學號不可能重複,所以可以用學號作為key,學生的姓名或者學生資訊作為value,value可以重複,可以相同,畢竟有重名的情況發生。
2、map 的使用場景:
優點查詢起來很快:根據 key 值快速查詢記錄,查詢的複雜度基本是 log(n),如果有1000個記錄,最多查詢10次,1,000,000個記錄,最多查詢20次。怎麼樣快吧?所以,當大家以後的工程中有比較多的使用想快速查詢的話可以使用map。
3、map的標頭檔案和命名空間:
#include //注意,沒有 .h
using namespace std; //在 std 標準命名空間中
4、map的定義:
一般情況下,都是定義乙個空的 map 物件,例如:
mapstud_***_map;
定義完了之後再使用,map也是個模板類,所以他也是支援各種型別的。
5、map的使用:
定義完了之後我們就可以開始使用了,例如:
int main(int argc, char* argv)
*** = stud_***_map[10012];
return 0;}
6、map的刪除:
刪除的話首當其衝的肯定是erase方法了。erase 方法支援 key 刪除和迭代器刪除,例如:
stud_***_map.erase(10010);
stud_***_map.erase(stud_***_map.begin());
7、map的遍歷:
因為是 map 不是陣列,所以不能用下標來遍歷,只能用迭代器來遍歷,如下:
for (map::iterator itor = stud_***_map.begin(); itor != stud_***_map.end(); ++itor)
8、小作業:
定義乙個 map型別的物件:
依次存入以下內容:
10010->'m'
10011->'f'
10012->'f'
10013->'m'
10014->'f'
10015->'m'
之後,使用 for 迴圈刪除map中的value值為 'f' 的元素,並將結果輸出出來!
c 第14課 list容器
list介紹 1 list是乙個雙向鍊錶容器,可高效地進行插入刪除元素。2 list不可以隨機訪問元素,所以不支援at.pos 函式與操作符。it ok it 5 err 3 include list物件的預設構造 list採用採用模板類實現,物件的預設構造形式 list lstt 如 list l...
《實用C 》第24課 結構體型別
1 自定義資料型別 c c 語言本身提供了很多基本資料型別,例如 int float char 等供我們使用。但是程式編寫的過程中問題往往比較複雜,基本的資料型別有時候不能滿足我們的需求,所以c c 語言允許開發者根據自己的需要自定義資料型別,接下來要講解的結構體struct 聯合體union 列舉...
《實用C 》第44課 檔案IO操作之讀寫
1 簡介 上節課給大家介紹了各種型別的檔案流物件,對檔案進行了開啟與關閉的操作。那麼開啟與關閉不是目的,開啟檔案之後重要的是為了要進行檔案的讀寫操作,不然開啟 關閉檔案幹嘛?對不對?在c 檔案流操作中,可以使用多種方法對檔案進行讀寫操作,例如 put get getline read write 都...