7

这些天我正在用 Erlang 解决Project Euler问题。

由于我从一开始就是一名 C++ 程序员,所以有时我真的很想使用二维数组进行编码。

我的想法之一是使用这样的元组和列表:

List=[{X,0}||X<-lists:seq(1,3)]
{1,0}
{2,0}
{3,0}

有没有在 Erlang 中实现多维数组的好方法?

4

3 回答 3

3

请参阅数组模块,但对于多维访问,您必须编写自己的包装器。如果您的任何维度都很短并且访问权限主要是读取,您可以使用元组并使用erlang:elementand erlang:setelement。无论如何,建议使用自己的包装器。

于 2009-02-11T14:41:48.417 回答
3

尝试使用 {X, Y, Z} 作为键的数组(实际上是 dict)。它看起来像 3d 数组;)

于 2009-03-06T19:03:05.433 回答
2

我为二维数组的数组模块写了一个小包装器

-module(array_2d).
-export([new/2, get/3, set/4]).

new(Rows, Cols)->
    A = array:new(Rows),
    array:map(fun(_X, _T) -> array:new(Cols) end, A).

get(RowI, ColI, A) ->
    Row = array:get(RowI, A),
    array:get(ColI, Row).

set(RowI, ColI, Ele, A) ->
    Row = array:get(RowI, A),
    Row2 = array:set(ColI, Ele, Row),
    array:set(RowI, Row2, A).
于 2017-02-01T21:22:23.653 回答