C 學習筆記之map unordered map

2021-10-09 12:50:12 字數 2987 閱讀 1609

unordered_map

優點:有序性,這是map結構最大的優點,其元素的有序性在很多 應用中都會簡化很多的操作樹,內部實現乙個樹使得map的很多操作在logn的時間複雜度下就可以實現,因此效率非常的高

缺點:空間佔用率高,因為map內部實現了樹,雖然提高了執行效率,但是因為每乙個節點都需要額外儲存父節點,使得每乙個節點都占用大量的空間

適用處:對於那些有順序要求的問題,用map會更高效一些

mapmap;

//map的基本建構函式

mapint>strmap;

map<

int,string >intmap;

mapchar

>strmap;

map<

char

,string>charmap;

map<

char

,int

>charmap;

map<

int,

char

>intmap;

#include

#include

"string.h"

#include

"stdio.h"

#include

using

namespace std;

intmain()

cout

string

("jjhou")]

; cout

mapint>

::iterator iter1;

//面對關聯式容器,應該使用其所提供的find函式來搜尋元素,會比使用stl演算法find()更有效率。因為stl演算法find()只是迴圈搜尋。

iter1 = strmap.

find

(string

("mchen"))

;if(iter1 == strmap.

end())

cout<<

"mchen no fount"

find

(string

("jerry"))

;if(iter1 != strmap.

end())

cout<<

"jerry fount"

iter1-

>second =9;

//可以通過map迭代器修改「value」(not key)

int number1 = strmap[

string

("jerry")]

; cout

mapint>

::iterator strmap_iter1 = strmap.

begin()

;for

(;strmap_iter1 !=strmap.

end(

);strmap_iter1++

) cout

erase

(iter1)

;//刪除乙個條目

strmap.

erase

(string

("jason"))

;//根據鍵值刪除

mapint>

::iterator strmap_iter2 = strmap.

begin()

;for

(;strmap_iter2 !=strmap.

end(

);strmap_iter2++

)}

優點:因為內部實現了雜湊表,因此其查詢速度非常的快

缺點:雜湊表的建立比較耗費時間

適用處:對於查詢問題,unordered_map會更加高效一些,因此遇到查詢問題,常會考慮一下用unordered_map

unordered_map ump;
ump.

insert

(make_pair

(key, value)

);

ump.

insert

(map::

value_type

(key, value)

);

if

(umap.

find

(key)

!= umap.

end())

cout << key <<

"found "

cout << key <<

"not found "

<< endl;

ump.

count

(key)

!=0

unordered_map

::iterator i;

for(i=ump.

begin()

;i!=ump.

end(

);i++

)cout<>first<<

" "<>second

erase

("test"

);

auto it = ump.

find

(key);if

(it != ump.

end())

it->second = new_value;

C 學習筆記之容器

list 和 vector 2者都屬於容器,但list只有雙向迭代器,而vector卻有隨機訪問迭代器 迭代器的種類 前向迭代器 forward iterator 可對迭代器進行 操作雙向迭代器 bidirectional iterator 可對迭代器進行 和 操作隨機訪問迭代器 random ac...

C 學習筆記之異常

程式執行中需要處理異常 異常處理方法一 異常處理方法二 c 異常處理機制 異常處理基礎 例子1 除數為零的異常處理 ex17 1.cpp 除數為零的異常例子 include include using namespace std 定義異常類myexception class myexception ...

C 學習筆記之 引用

先宣告一下,這裡的內容大多是 c 程式設計思想 中的內容,我最近在學習c 覺得裡面的很多話不錯,另外例子也都自己實驗了一番,有些現象很有趣,希望與大家分享。引用 reference 就像能自動地被編譯器間接引用的常量型指標。常量型指標的含義就是常量修飾指標,即指的地方不變,但所指地方的內容可以改變。...