在特定位置插入一個矢量到另一個矢量的最有效方法是什麼?最有效的方法來連接矢量
例如:
var aa:Vector.<int> = Vector.<int>([1, 2, 3]);
var bb:Vector.<int> = Vector.<int>([9, 8, 7]);
這並不似乎工作:
bb.splice(1, 0, aa);
結果是[9,0,8,7]。
在特定位置插入一個矢量到另一個矢量的最有效方法是什麼?最有效的方法來連接矢量
例如:
var aa:Vector.<int> = Vector.<int>([1, 2, 3]);
var bb:Vector.<int> = Vector.<int>([9, 8, 7]);
這並不似乎工作:
bb.splice(1, 0, aa);
結果是[9,0,8,7]。
如果您需要一個接一個地連接,就像PatrickS提到bb.concat將完成這項工作。
如果您需要在中間插入值,你需要像
for each (var i : int in aa.reverse())
{
bb.splice(1,0,i);
}
,或者更優雅,這一點,如果你不能改變AA
var insertingIndex : int = 2;
for each (var i : int in aa)
{
bb.splice(insertingIndex, 0, i);
insertingIndex++;
}
眼下有除了在Vector
上做循環之外沒有內建函數,這裏有兩種方法(我沒有對它們進行計時)。
如果BB可以是一個新的Vector
比如,你可以這樣做:
var insertIndex:int = 1;
bb=bb.slice(0, insertIndex).concat(aa).concat(bb.slice(insertIndex));
如果BB不能改變,你可以做一個splice
但準備的元素插入到一個新的Array
:
var insertIndex:int = 1;
var parms:Array=[insertIndex, 0]; // prepare the arguments for the splice call
var j:int = 2; // length of the parms array
var len:int = aa.length;
for (var i:int = 0; i < len; i++, j++){
parms[j] = aa[i];
}
// call the splice with the new arguments
bb.splice.apply(bb, parms);
我認爲concat在引擎蓋後面做了一個循環,所以這兩個解決方案應該大致相當。 – 2010-09-21 10:52:28
看起來像slice.concat.concat是目前爲止效率最高的。 – zinovii 2010-09-21 10:59:22
對於這個循環什麼是變量「我」? – zinovii 2010-09-21 10:52:27
2個例子都沒有工作,兩個例子都沒有效率。我仍然希望找到更有效的方法,然後循環和拼接。 – zinovii 2010-09-21 10:54:17
小心定義「不工作」和「高效」? :) – 2010-09-21 14:22:54