powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / присвоение значений одного массива другому.
11 сообщений из 11, страница 1 из 1
присвоение значений одного массива другому.
    #38259478
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как лучше копировать информацию из одного динамического массива в другой, если их размерности одинаковые? Просто прировнять два массива X=Y или все таки использовать функцию memcpy. Есть ли разница?
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38259482
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот стоит дом. Большой, бетонный. На нем табличка "Улица, Дом№". А весь район называет этот дом "красный дом" потому что он единственный в районе покрашен красной краской.
Так вот динамический массив Y это табличка "Улица, Дом№". А команда X=Y это фраза "А этот дом называют красным".
Понял?
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38259483
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я над этим подумаю, но что-то мне подсказывает, что лучше использовать memcpy, так как у меня уже возникали проблемы в виде нерабочей программы при простом приравнивании двух массивов, хотя в программе которую я сейчас пишу пока, что все копируется корректно, но не факт, что в будущем это не выльется в очередную неточность.
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38259485
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотите сказать что эти два массива будут ссылаться на один участок памяти и изменение какого-либо значения в одном массиве приведет к изменению значения в другом? Тогда может записать так: X=&Y ?
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38259491
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Хотите сказать что эти два массива будут ссылаться на один участок памяти и изменение какого-либо значения в одном массиве приведет к изменению значения в другом?Именно так.
kab18Тогда может записать так: X=&Y ?"А вот это белая табличка на которой написан адрес дома".
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38259536
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Как лучше копировать информацию из одного динамического массива в другой, если их размерности одинаковые? Просто прировнять два массива X=Y или все таки использовать функцию memcpy. Есть ли разница?

Пример кода приведи, чтобы предметно разговаривать. Тут не ясно, что такое X и Y.

Но в общем случае чтобы скопировать массив нужно либо memcpy использовать, либо аналоги из STL (std::copy), либо просто почленно копировать в цикле.
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38260065
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не стебитесь над новичком. Даже до мне ваш ассоциативный ряд с домами непонятен.

Можно и копировать и присваивать указатель, оба способа допустимы. В зависимости от конкретной задачи допустимы либо оба способа, либо только копирование, либо только работа с одним массивом через указатель. Но надо помнить, что копирование массивов - дорогая операция, которую стоит делать только если в этом есть необходимость.

предметно разговаривать можнотолько если знаешь конкретную задачу.
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38260473
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
double* __fastcall Newton(double* X,double* Y,unsigned int quantity)
{
//массивы X,Y,DivDiffNewton одинаковой размерности
double *DivDiff,*DivDiffNewton;
DivDiff=new double[quantity];
DivDiffNewton=new double[quantity];
unsigned int m=0;
DivDiffNewton[0]=Y[0];
memcpy(&DivDiff,&Y,sizeof(Y));
for(unsigned int j=quantity-1;j>0;j--)
{
m++;
for(unsigned int i=0;i<=j-1;i++) DivDiff[i]=(DivDiff[i+1]-DivDiff[i])/(X[i+m]-X[i]);
DivDiffNewton[m]=DivDiff[0];
}
return DivDiffNewton;
}
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38260496
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18
Код: plaintext
1.
2.



Раз вы пишите все таки на С++, то может будете использовать средства этого языка:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
double* __fastcall Newton(std::vector<double>& result, double* X,double* Y,unsigned int quantity)
  std::vector<double> DivDiff(Y, Y + quantity);
  std::vector<double> DivDiffNewton(quantity);
  unsigned int m=0;
  DivDiffNewton[0]=Y[0];
  for(unsigned int j=quantity-1;j>0;j--)
  {
     m++;
     for(unsigned int i=0;i<=j-1;i++) DivDiff[i]=(DivDiff[i+1]-DivDiff[i])/(X[i+m]-X[i]);
     DivDiffNewton[m]=DivDiff[0];
  }
  result.swap(DivDiffNewton);
  assert(DivDiffNewton.size());
  return &DivDiffNewton[0];
}
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38260504
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18
Код: plaintext
1.
2.
3.
4.
5.
6.
double* __fastcall Newton(double* X,double* Y,unsigned int quantity)
{
//массивы X,Y,DivDiffNewton одинаковой размерности
double *DivDiff,*DivDiffNewton;
DivDiff=new double[quantity];
DivDiffNewton=new double[quantity];




Тут все "массивы" -- указатели, так что семантика присваивания с ними не будет работать так, как хотелось бы автору топика.
Т.е. тут чтобы скопировать массив один в другой, нужно использовать memcpy или std::copy.
Или писать копирование самому, поэлементно.


Код: plaintext
1.
memcpy(&DivDiff,&Y,sizeof(Y));



sizeof(Y) == sizeof void* == 4 или 8 в зависимости от платформы, я думаю, тут всё же автор хотел копировать массив весь, а не один его элемент. Тогда надо не так, а

Код: plaintext
1.
memcpy( DivDiff, Y, quantity*sizeof(double) );



Ну и от указателей брать адреса не надо -- они и так уже адреса.
Ну и в коде ещё есть ошибки.
...
Рейтинг: 0 / 0
присвоение значений одного массива другому.
    #38260609
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / присвоение значений одного массива другому.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]