2013-04-17 1 views
-1

Я хочу создать 2D-зубчатый массив (так как предыдущие ответы на запросы быстрее на сетчатой ​​сети, чем многомерные).быстрый способ сбросить 2-мерный зубчатый массив фиксированной ширины

Я хочу сделать что-то вроде

Int [][] myarr = new int [2][3]; 

Но не кажется C# поддержать это так, я использовал для цикла для 2-го размера конкретизации. Тем не менее, если я хочу быстро сбросить, я не могу использовать эквивалент memset, поскольку каждое новое в цикле инициирует массив в возможном другом, а не постоянном месте.

Есть ли более быстрый способ инициализации и сброса массива с фиксированной шириной?

+0

Существует 'memset' в C#? –

+0

Первый вопрос, который приходит на ум здесь: является ли эта деталь тщательно измеренной и реальной узкой точкой в ​​вашем приложении? –

+1

Ваша проблема заключается только в O (m) для массива mxn. Это не узкое место. –

ответ

1

Вы можете использовать LINQ и Enumerable.Range метод, но внутри есть еще цикл выполняется:

int[][] myarr = Enumerable.Range(0, 2).Select(x => new int[3]).ToArray(); 
+0

Это фактически создает новый массив, а скорее перезагружает старый. Я думаю, что в сети точек это такая же стоимость? – Dani

+0

@Dani - обычно примерно такая же цена. Но для больших массивов читайте о LOH –

+0

. Я проверю его, хотя это не мое дело. Мне нужно сделать небольшой тест, чтобы увидеть разницу затрат между распределением и сбросом в цикле. – Dani

 Смежные вопросы

  • Нет связанных вопросов^_^