如何检查域是否包含Chapel中的元素

时间:2018-05-25 16:51:44

标签: sparse-matrix chapel

假设我有一个稀疏域,我想检查是否添加了一个元素。

var D = {1..5, 1..5},
    SD: sparse subdomain(D);

SD += (1,3);

现在我想知道(1,3)(2,3)是否在SD中。这不正确,this page没有.contain()示例。哈!看看我在那里做了什么?

//Don't do this
SD.contains(1,3)  // want true;
SD.contains(2,3)  // want false;

1 个答案:

答案 0 :(得分:4)

Chapel中的域都支持带有签名member(i:idxType ...rank)的方法,如果指定的索引是域的成员,则返回true,否则返回false。这包括关联域,不透明,矩形和稀疏域。以下是每种类型的示例:

<强>关联:

var D: domain(string);
D += "hello";

writeln("Associative");
writeln(D.member("world")); // false
writeln(D.member("hello")); // true

<强>不透明:

var D: domain(opaque);
var i1 = D.create();
var i2: i1.type;

writeln("Opaque");
writeln(D.member(i2)); // false
writeln(D.member(i1)); // true

<强>矩形:

  var D = {1..4, 3..5};

  writeln("Rectangular");
  writeln(D.member(2,6)); // false
  writeln(D.member(3,3)); // true

<强>稀疏

  var D = {1..10, 1..10};
  var SD: sparse subdomain(D);
  SD += (2,3);

  writeln("Sparse");
  writeln(SD.member(2,7)); // false
  writeln(SD.member(2,3)); // true