erlang的map基本使用

2022-02-26 15:21:44 字數 1750 閱讀 1713

maps 

適用於需要在執行時改變資料結構(record則不行)的場景,可以動態增加key

資料量不宜過大,具體多大沒有實際資料,

maps from_list  如果list表很長,則相應的耗時時間會很長,此時最好用lists模組。

由於map是動態結構,速度上必然無法匹敵record。

記憶體大小介於tuple與list之間

lists:sort([1,#{}, {}, ]).

[1,{},#{},] 

operations

records

maps

dict

immutable✓✓

✓keys of any type✓✓

usable with maps/folds✓✓

content opaque to other modules

✓has a module to use it✓✓

supports pattern matching✓✓

all keys known at compile-time

✓can merge with other instance✓✓

testing for presence of a key✓✓

extract value by key✓✓

✓per-key dialyzer type-checking✓*

conversion from/to lists✓✓

per-element default values

✓standalone data type at runtime

✓fast direct-index access

✓示例**

-module

(test).

-compile([export_all]).

%maps:

% find/2 fold/3 from_list/1 get/2 get/3

% is_key/2 keys/1 map/2 merge/2 module_info/0

% module_info/1 new/0 put/3 remove/2 size/1

% to_list/1 update/3 values/1 with/2 without/2start() ->a = #,

# =a,

a1 = a#.

%make() ->

% maps: new |from_list

m1 =maps:new(),

%insert new one

m2 = m1#,

%update

m3 = m2#,

%maps 模組封裝了一些函式

maps:put(k2, 2, m3).

%匹配match(#) -> io:format("~p ~n", [k1]);

match(#) -> io:format("~p ~n", [n]).

raw() ->[ || i <- lists:seq(1, 10000000)].

get() ->l =raw(),

lists:keyfind(999, 1, l).

get2() ->m =maps:from_list(raw()),

maps:get(999, m).

map的基本使用

標籤 c iterator string insert iostream 2010 08 11 18 16 31010人閱讀收藏 舉報 c c 35 1 map簡介 map是一類關聯式容器。它的特點是增加和刪除節點對迭代器的影響很小,除了那個操作節點,對其他的節點都沒有什麼影響。對於迭代器來說,可以...

erlang的基本語法

1 變數 1 erlang變數變數必須以大寫字母或者下劃線開頭,可以包含字母 下劃線和 2 變數只容許賦值一次 2 數字型別 1 b val表示以b進製儲存的數字val,比如 7 2 101.5二進位制儲存的101就是10進製的5了 8 8 101.65八進位制儲存的101就是10進製的65了 2 ...

Erlang下map(對映組)的問題

主要是遇到 map匹配的問題,所以順便回憶一下 erlang 中的對映組 map,在其它語言中被稱作 hash 雜湊或者 dict 字典。erlang 從 r17 版本開始支援對映組 建立對映組 erlang 中的對映組用結構 表示,建立乙個對映組可以這樣 不管你怎麼排序,最終結果都是按鍵的字典順序...