none
Начальная установка значений в массиве RRS feed

  • Вопрос

  • Всем привет!

    Как при инициации большого массива установить его элементам 
    одинаковые ненулевые значения?
    Можно ли сделать это без цикла?

    int A = new int [1000];
    for (int i=0;i<A.Length;i++) A[i]=1;


    • Изменено QazRdx 12 декабря 2014 г. 21:12
    12 декабря 2014 г. 21:09

Ответы

  • Нет. Вариант - memset, но тут выигрыш только в реализации этой функции на ассемблере.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа QazRdx 13 декабря 2014 г. 9:32
    12 декабря 2014 г. 23:07

Все ответы

  • Нет. Вариант - memset, но тут выигрыш только в реализации этой функции на ассемблере.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа QazRdx 13 декабря 2014 г. 9:32
    12 декабря 2014 г. 23:07
  • М-да-с!
    Вот и я думал - думал и ничего не придумал!
    Видимо, этого нет,
    а вообще зря - потребность-то очевидна!
    13 декабря 2014 г. 9:32
  • Дело в том, что .NET ориентирован на безопасность. Недаром код зовётся управляемым.

    В обычном (нативном) коде просто выделяется память - начальный адрес, длина участка. И всё. При этом в этой памяти лежит мусор, который остался после работы других программ. То есть, теоретически, злоумышленник может прочитать данные, относящиеся к другим программам.

    В дотнете при выделении памяти она сперва очищается (записывается нулями) и лишь затем отдаётся прикладному коду. То есть в ней уже нет данных других приложений. Конечно, это ухудшает производительность.

    Так-то да, я бы тоже хотел иметь возможность при выделении памяти указывать, какими данными её записать, хотя бы константой отличной от нуля.

    13 декабря 2014 г. 10:11
  • А чем угрожала бы предустановка?
    Чем отличаются нули от тех же единиц?
    "Опасный мусор" от предыдущего приложения забивается либо по умолчанию нулями,
    либо моей цифирью, и все, ноу проблем.
    Нет, скорее всего просто руки не дошли.
    Ладно, переживем, бывало и хуже!
    13 декабря 2014 г. 12:19