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 中的對映組用結構 表示,建立乙個對映組可以這樣 不管你怎麼排序,最終結果都是按鍵的字典順序...