Arrays 将一个数组中的多个值插入另一个数组

Arrays 将一个数组中的多个值插入另一个数组,arrays,perl,linked-list,Arrays,Perl,Linked List,我需要用Perl处理数组中的大量数据。 在某些情况下,我需要在主数组中插入第二个数组的值。 我已经看到,拼接通常应该是一种方式。然而,在研究了一点之后,我发现这个函数是内存密集型的,随着时间的推移可能会导致严重的性能问题 这是我需要做的基本工作- # two arrays @primary = [1, 2, 3, 4, 5, 6, 7, 8, 9]; @second = [a, b, c, d e]; 现在将@second的内容插入偏移量4处的@primary以获得- @primary = [

我需要用Perl处理数组中的大量数据。 在某些情况下,我需要在主数组中插入第二个数组的值。 我已经看到,拼接通常应该是一种方式。然而,在研究了一点之后,我发现这个函数是内存密集型的,随着时间的推移可能会导致严重的性能问题

这是我需要做的基本工作-

# two arrays
@primary = [1, 2, 3, 4, 5, 6, 7, 8, 9];
@second = [a, b, c, d e];
现在将@second的内容插入偏移量4处的@primary以获得-

@primary = [1, 2, 3, 4, a, b, c, d, e, 5, 6, 7, 8, 9];
当我必须处理一个包含2000多个元素的主数组时,使用链表是最有效的方法吗

注意:有人能确认这是正确的方法吗

$Tail = splice($primary, 4);
push(@primary, @second, $Tail);

这是一种“正确”的方法,只要它有效。然而,这可能不是最直接的方法

#!/usr/bin/perl -l

use Data::Dump qw(dump);

my @pri = (1..9);
my @sec = ('a'..'e');

print "pri = ", dump(\@pri);
print "sec = ", dump(\@sec);

splice @pri, 4, 0, @sec; ### answer

print "now pri = ", dump(\@pri);
这将显示:

$ perl x.pl
pri = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sec = ["a", "b", "c", "d", "e"]
now pri = [1, 2, 3, 4, "a", "b", "c", "d", "e", 5, 6, 7, 8, 9]
这就是你要找的。即使是2k元素,您也可能会发现它足够快(TM)

那不是你说的那样。两者之间有一个重要的区别

# Store a list of values in an array
@primary = (1, 2, 3, 4, 5, 6, 7, 8, 9);

我想这只是一个转录错误,但值得指出这些问题,以防其他人试图复制您的代码


并且,为了将来的参考,请将代码剪切并粘贴到堆栈溢出的问题中。如果您重新键入,很可能会出错,并使试图帮助您的人感到困惑。

不要过早进行优化。把它拼接起来,如果(不是什么时候)它会导致问题,那么就开始寻找更深奥的解决方案谢谢你。另一个精度-我将处理坐标,将它们扩展为多边形缓冲区。这意味着对于2K坐标线,我将执行2K次插入。你觉得我们的性能还可以吗?@Simon是的,因为数组无论如何只能有标量(引用仍然是标量),所以你不是在移动对象或数组,而是在移动引用。和往常一样,唯一可以确定的方法是对其进行基准测试。
# two arrays
@primary = [1, 2, 3, 4, 5, 6, 7, 8, 9];
@second = [a, b, c, d e];
# Store a list of values in an array
@primary = (1, 2, 3, 4, 5, 6, 7, 8, 9);
# Store a list of values in an anonymous array
# Then store a reference to that array in another array
@primary = [1, 2, 3, 4, 5, 6, 7, 8, 9];