Заполнить массив
От: Аноним  
Дата: 21.09.10 08:59
Оценка:
Есть ли какой-нибудь способ эффективно заполнить массив каким-либо значением, что-то наподобии std::fill? Сейчас приходится городить for(mutable i=...) a[i]=-1.
Re: Заполнить массив
От: hardcase Пират http://nemerle.org
Дата: 21.09.10 09:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть ли какой-нибудь способ эффективно заполнить массив каким-либо значением, что-то наподобии std::fill? Сейчас приходится городить for(mutable i=...) a[i]=-1.


Не помню чтобы вообще такая утилита была в .NET.

public Fill[T](a : array[T], x : T) : void
{
 for(mutable i = 0; i < a.Length; ++i) a[i] = x;
}
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Заполнить массив
От: hardcase Пират http://nemerle.org
Дата: 21.09.10 09:12
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


А>>Есть ли какой-нибудь способ эффективно заполнить массив каким-либо значением, что-то наподобии std::fill? Сейчас приходится городить for(mutable i=...) a[i]=-1.


H>Не помню чтобы вообще такая утилита была в .NET.


H>
H>public Fill[T](a : array[T], x : T) : void
H>{
H> for(mutable i = 0; i < a.Length; ++i) a[i] = x;
H>}
H>


Можно даже чуточку лучше:


module ArrayExtensions
{
  public FillWith[T](this a : array[T], x : T) : void
  {
     for(mutable i = 0; i < a.Length; ++i) a[i] = x;
  }
}


Использование:
def a = array(10);
a.FillWith(-1);
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Заполнить массив
От: Аноним  
Дата: 21.09.10 09:34
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


А>>Есть ли какой-нибудь способ эффективно заполнить массив каким-либо значением, что-то наподобии std::fill? Сейчас приходится городить for(mutable i=...) a[i]=-1.


H>Не помню чтобы вообще такая утилита была в .NET.


H>
H>public Fill[T](a : array[T], x : T) : void
H>{
H> for(mutable i = 0; i < a.Length; ++i) a[i] = x;
H>}
H>


Тогда уж лучше сделать так:

public Generate[T](a : array[T], x : int->T) : void
{
 for(mutable i = 0; i < a.Length; ++i) a[i] = x();
}

public Fill[T](a : array[T], x : T) : void
{
  Generate.[T](a, _=>x);
}
Re[3]: Заполнить массив
От: hardcase Пират http://nemerle.org
Дата: 21.09.10 09:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Тогда уж лучше сделать так:


А>
А>public Generate[T](a : array[T], x : int->T) : void
А>{
А> for(mutable i = 0; i < a.Length; ++i) a[i] = x();
А>}

А>public Fill[T](a : array[T], x : T) : void
А>{
А>  Generate.[T](a, _=>x);
А>}
А>


Зависит от того, что вам нужно. Мне утилита сия не особо нужна, так как с массивами практически не работаю — не удобные они.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Заполнить массив
От: Аноним  
Дата: 21.09.10 09:40
Оценка:
selfix

А>
А>public Generate[T](a : array[T], x : int->T) : void
А>{
А> for(mutable i = 0; i < a.Length; ++i) a[i] = x(i);
А>}

А>public Fill[T](a : array[T], x : T) : void
А>{
А>  Generate.[T](a, _=>x);
А>}
А>
Re[4]: Заполнить массив
От: Аноним  
Дата: 21.09.10 09:45
Оценка:
H>Зависит от того, что вам нужно. Мне утилита сия не особо нужна, так как с массивами практически не работаю — не удобные они.

Ну неудобные, зато во многих случаях эффективные. Кэш опять же.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.