LINUX.ORG.RU

Аналог контейнера vector в perl


0

0

Знающие perl, подскажите пожалуста как следующий плюсовый код проще всего реализовать в perl

class T
{
public:
int value1;
int value2;
}
typedef std::vector<T> tlist;

т.е. нужна очередь записей из 2-х элементов с возможностью поиска, добавления и удаления.

★★

Ответ на: комментарий от swizard

Ну желательно, что бы это был двухсвязный список, т.к. очередь будет большая и постоянно ресайзится ...
Всеравно спасибо, пропробую через хеши, а то я о них как-то подзабыл:)

Delay ★★
() автор топика
Ответ на: комментарий от Delay

> Ну желательно, что бы это был двухсвязный список

А разве std::vector -- двухсвязный список? :) Тем более, кто тебе запрещает резайзить перловый массив, он же динамический.

swizard
()
Ответ на: комментарий от Delay

> Ну желательно, что бы это был двухсвязный список

my %dl_list = ( 'next' => undef, 'prev' => undef, 'data' => undef );

insert_to_list(\%dl_list, 'some_string');

sub insert_to_list()
{
  my ($list, $data) = @_;
  my $next;
  my %node_ref = ( 'next' => undef, 'prev' = 'undef', 'data' = $data );
  
  $next = $list->{'next'};
  $list->{'next'} = \%node_ref;
  $list->{'next'}->{'prev'} = $list;
  $list->{'next'}->{'next'} = $next;
}

asgard
()
Ответ на: комментарий от swizard

> А разве std::vector -- двухсвязный список? :)

Хм, не знаю, но всегда считал что да:)

>Тем более, кто тебе запрещает резайзить перловый массив, он же динамический.

Ну, проблема в том, что не знаю perl :)

Delay ★★
() автор топика
Ответ на: комментарий от asgard

s/my %node_ref = ( 'next' => undef, 'prev' = 'undef', 'data' = $data );/my %node_ref = ( 'next' => undef, prev => undef, 'data' = $data );/

asgard
()
Ответ на: комментарий от asgard

Я предполагал, что есть что-то стандартное, в общем спасибо, сейчас пишу с использованием хэшей, если производительность не будет устраивать то довелосипедю remove_from_list и search_in_list :)

Delay ★★
() автор топика
Ответ на: комментарий от Delay

> > А разве std::vector -- двухсвязный список? :)

> Хм, не знаю, но всегда считал что да:)

Ни разу. Это обычно массив.

Двусвязный список - это list.

Перловый массив - это довольно близкий аналог плюсового вектора.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.