Perl和Multimap

时间:2010-06-11 06:59:15

标签: perl

有没有办法在perl中实现C ++多图?

2 个答案:

答案 0 :(得分:7)

使用hash of arrays

my %students = ( # keys are IDs, values are enrollments
    100023 => [qw(Geography Mining)],
    100058 => [qw(Geography Geology Woodcraft)],
);

答案 1 :(得分:3)

如果通过multimap表示C++ multimap,那么答案是肯定的。在Perl中,映射对应于散列。与散列中的给定键相关联的值可以是对散列的引用。 Perl也不要求你在第一次索引操作后使用->,所以不要说$h{key1}->{key2},而是只能说$h{key1}{key2},这会让你产生令人信服的多维哈希假象。

以下是一个例子:

#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

my %h;

my $i;
for my $k (qw/one two three/) {
    for my $j (qw/a b c/) {
        $h{$k}{$j} = $i++;
    }
}

print "one b should be 1: $h{one}{b}\n",
    Dumper \%h;