|
|
1
2
根据Calc_Sub所做的操作,可以创建一个IEnumerable类,该类接受数组并在数组的某些部分上迭代。类似的东西 ArraySegment 但是 better . |
|
|
2
8
|
|
|
3
5
简单的答案是,要获得子数组,必须创建一个新的数组并复制元素…或者,如果你使用C++,你将会是MCPCP。
现在,为什么不采用偏移/计数方法呢?
打电话时
这基本上是将指针传递到start/half pos元素并告诉函数只处理数组元素的一半的方法。 我要注意的是,除非您使用大型双数组,否则您真的不应该担心这个问题。64位=8字节。即使你有一个1000个元素的数组,也就是8000字节,大约8kb的内存,在不到一秒钟的时间内,你会有很大的空闲空间… 现在,在可能的情况下保存内存总是一个好主意,但我认为这是过早的优化。 我还应该注意数组是通过引用传递的,因为它们实际上是对象,而不是整数或字符串,所以这个方法是最好的内存方面的方法[它不复制数组;它提供类似于指向数组对象的指针],但它的局限性在于,在函数中修改数组会修改传递到函数外部的数组呼叫。 |
|
4
1
继续这样写你自己的子阵函数:
然后你可以像这样使用它:
|
|
|
5
1
如果你能
这样就不必将数据复制到新数组中,表达式将从原始数组返回项。 |