Чи є спосіб реалізувати багатосмуговий C + + в perl?
Відповіді:
7 для відповіді № 1Використовуйте a хеш масивів.
my %students = ( # keys are IDs, values are enrollments
100023 => [qw(Geography Mining)],
100058 => [qw(Geography Geology Woodcraft)],
);
3 для відповіді № 2
Якщо за допомогою 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;