Добрый день!
Если имеем дело с обычным массивом, то можно написать:
const int n = ...;
int arr[n] = {0};
А если есть:
int* arr = new int[n];
Можно ли его разом заполнить нулями или еще чем, кроме как в цикле:
for (int i = 0; i < n; i++) arr[i] = 0;
??
Т.е. лишь бы этот цикл перебора обойти. Как нибудь можно?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, ddocker, Вы писали:
D>Добрый день!
D>Если имеем дело с обычным массивом, то можно написать:
D>D>const int n = ...;
D>int arr[n] = {0};
D>
D>А если есть:
D>int* arr = new int[n];
D>Можно ли его разом заполнить нулями или еще чем, кроме как в цикле:
Если именно нулями, то
int* arr = new int[n]();
но при этом надо убедиться, что компилятор не "сломан", т.е. понимает смысл этого '()'.
Также можно предложить 'std::fill' и 'std::fill_n'.
Вдогонку
Простите конечно за беспокойство с очередным ламерским вопросом....
А вот как теперь скопировать один массив указателей в другой без перебора.
Опять же в случае с обычным массивом работает
memcpy(dest, src, sizeof(src));
А случае если
int* dest = new int[n]
int* src = new int[n]
....
Такое уже не прокатывает в dest — образуется какой-то мусор.
Здравствуйте, ddocker, Вы писали:
D>memcpy(dest, src, sizeof(src));
D>А случае если
D>D>int* dest = new int[n]
D>int* src = new int[n]
D>....
D>
D>Такое уже не прокатывает в dest — образуется какой-то мусор.
Что по-твоему значит последний параметр у memset() ?
И чему в твоём случае равен
sizeof(src) ? (подсказка:
sizeof(src) == sizeof(int*))