- Регистрация
- 2 Янв 2016
- Сообщения
- 86
- Лучшие ответы
- 0
- Репутация
- 38
Описание:
Параметры:
Возвращаемое значение:
Плюсы реализации:
Пример использования:
Автор: VVWVV
Заполняет все ячейки массива переданным значением.
Параметры:
array[] - массив/строковая переменная, в которую будет записан результат
val - заполняемое значение
val - заполняемое значение
Возвращаемое значение:
Всегда возвращает нуль.
Плюсы реализации:
- Быстрое заполнение. В 4-5 раз быстрее варианта от Slice.
- Зависимость от библиотеки
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!. Необходимо подключить библиотеку asm.
Код:
stock memset(array[], val, size = sizeof array) {
static
amx_header[AMX_HDR],
bool:is_amx_header_initialized = false;
if (0 == _:is_amx_header_initialized) {
is_amx_header_initialized = true;
GetAmxHeader(amx_header);
}
new
base,
ctx[AsmContext],
cod = -(amx_header[AMX_HDR_DAT] - amx_header[AMX_HDR_COD]);
#emit CONST.pri memset
#emit LOAD.S.alt cod
#emit ADD
#emit STOR.S.pri base
AsmInitPtr(ctx, base, 200);
@emit PROC
@emit LOAD.S.alt 12
@emit LOAD.S.pri 16
@emit FILL (size << 2)
@emit RETN
#emit LCTRL 5
#emit SCTRL 4
#emit CONST.pri memset
#emit ADD.C 4
#emit SCTRL 6
return 0;
}
Код:
main()
{
new array[1000] = {1000,1000+1,...};
print(!"Before:");
printf("0: %d", array[0]);
printf("499: %d", array[499]);
printf("999: %d", array[999]);
memset(array,6);
print(!"After:");
printf("0: %d", array[0]);
printf("499: %d", array[499]);
printf("999: %d", array[999]);
}
Копирование данной статьи на других ресурсах без разрешения автора запрещено.