Можно ли разом заполнить указатель на массив нулями?
От: ddocker Россия www.codelab.ru
Дата: 08.02.06 23:19
Оценка:
Добрый день!
Если имеем дело с обычным массивом, то можно написать:

const int n = ...;
int arr[n] = {0};


А если есть:
int* arr = new int[n];

Можно ли его разом заполнить нулями или еще чем, кроме как в цикле:
for (int i = 0; i < n; i++) arr[i] = 0;

??

Т.е. лишь бы этот цикл перебора обойти. Как нибудь можно?
Re: Можно ли разом заполнить указатель на массив нулями?
От: Vain Россия google.ru
Дата: 09.02.06 00:27
Оценка:
Здравствуйте, ddocker, Вы писали:

D>Т.е. лишь бы этот цикл перебора обойти. Как нибудь можно?

1. memset(dest,char,count)?
2. рекурсивные шаблоны?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: Можно ли разом заполнить указатель на массив нулями?
От: Андрей Тарасевич Беларусь  
Дата: 09.02.06 01:02
Оценка:
Здравствуйте, 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'.
Best regards,
Андрей Тарасевич
Re: Можно ли разом заполнить указатель на массив нулями?
От: ddocker Россия www.codelab.ru
Дата: 09.02.06 21:53
Оценка:
Вдогонку
Простите конечно за беспокойство с очередным ламерским вопросом....

А вот как теперь скопировать один массив указателей в другой без перебора.
Опять же в случае с обычным массивом работает

memcpy(dest, src, sizeof(src));

А случае если
int* dest = new int[n]
int* src  = new int[n]
....

Такое уже не прокатывает в dest — образуется какой-то мусор.
Re[2]: Можно ли разом заполнить указатель на массив нулями?
От: Аноним  
Дата: 09.02.06 22:23
Оценка:
Здравствуйте, 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*))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.