Название вопроса довольно понятно. У меня есть цикл выполнения, которому нужен массив динамического размера. Но я знаю, что максимальный размер этого размера будет, поэтому при необходимости я могу максимизировать его, а не динамически - его размер.Какой самый быстрый для обнуления массив?
Вот мой код, я знаю, что clock_t, вероятно, не лучший выбор времени с точки зрения переносимости, но clock_t обеспечивает плохую точность.
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <ctime>
#define TEST_SIZE 1000000
using namespace std;
int main(int argc, char *argv[])
{
int* arrayPtr = NULL;
int array[TEST_SIZE];
int it = 0;
clock_t begin, end;
begin = clock();
memset(array, 0, sizeof(int) * TEST_SIZE);
end = clock();
cout << "Time to memset: "<< end - begin << endl;
begin = clock();
fill(array, array + TEST_SIZE, 0);
end = clock();
cout << "Time to fill: "<< end - begin << endl;
begin = clock();
for (it = 0 ; it < TEST_SIZE ; ++ it) array[it] = 0;
end = clock();
cout << "Time to for: "<< end - begin << endl;
}
Вот мой результат:
Time to memset: 1590
Time to fill: 2334
Time to for: 2371
Теперь, когда я знаю, что новый & удаление делает сейчас нулевой из массива, есть ли способ быстрее, чем это?
Пожалуйста, помогите!
'new' и' delete' - это не то же самое, что обнулить массив. Что именно ты пытаешься сделать? – Mysticial
Я не знаю, почему профиль удаляет оператора. В любом случае новый оператор не заполняет массив 0. – Vincenzo
Действительно, моя система всегда дает мне инициализированный массив из 0s. –