Perl и Multimap - PullRequest
       2

Perl и Multimap

1 голос
/ 11 июня 2010

Есть ли способ реализовать мультикарту C ++ в perl?

Ответы [ 2 ]

7 голосов
/ 11 июня 2010

Используйте хэш массивов .

my %students = ( # keys are IDs, values are enrollments
    100023 => [qw(Geography Mining)],
    100058 => [qw(Geography Geology Woodcraft)],
);
3 голосов
/ 11 июня 2010

Если под мультикартой вы подразумеваете 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...