Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> копирование массивов 
:(
    Опции темы
_hunter
  Дата 1.4.2004, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



как в один массив на заданную позицию скопировать другой массив?

Заранее благодарю за ответ.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Coocky
Дата 1.4.2004, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата
как в один массив на заданную позицию скопировать другой массив?

Покажи на примере.Вопрос либо легок, либо я не понял че надо.


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Stalk
Дата 1.4.2004, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.1.2004
Где: Украина, харьков

Репутация: нет
Всего: нет



Типа заменить?
Код

int m1[100];
int m2[50];
int pos=25;//с какой позиции вставлять
...//инициализация
for(int i=pos;i<pos+50;i++)
  m1[i]=m2[i-pos];

Типа вставить?
Код

int *m1;
int *m2;
int size1=50;
int size2=50
int pos=25;//с какой позиции вставлять
m1=new int[size1];
m2=new int[size2];
...//инициализация
int *b=new int[size1];
for(int i=0;i<size1;i++)//надо запомнить массив перед изменением его размеров
  b[i]=m1[i];
m1=new int[size1+size2];
for(int i=0;i<size1+size2;i++){
  if(i<pos|i>pos+size2)
     m1[i]=b[i];
  else
     m1[i]=m2[i-pos];
}

Вроде ничего не забыл?
PM MAIL ICQ   Вверх
sergejzr
Дата 2.4.2004, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Пользуйтесь функцией memcpy
Быстрее и короче.
Код

#include "string.h"
#include "stdlib.h"
#include "windows.h"
/*Вставляем в массив1 массив2 начиная с 5 знака (--отредактировано--)*/
int main()
{
char massiv1[300];
char massiv2[300];
int position=4;

/*memcpy(void* куда, void *что, int сколько_знаков);*/
memcpy(&massiv1[position],massiv2,10);

/*
&massiv[position] Тут мы создали новый указатель char* на остаток массива
Можно было бы:
char* hlp=&massiv[position];
*/

return 0;
}


Удачи!
Сергей

Это сообщение отредактировал(а) sergej.z - 6.4.2004, 13:08


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Stalk
Дата 2.4.2004, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.1.2004
Где: Украина, харьков

Репутация: нет
Всего: нет



Так... кто такой memcpy и с чем его едят? Я так понял получилось что-то вроде новой ветки в массиве или как? Поясни если не трудно...
PM MAIL ICQ   Вверх
sergejzr
Дата 6.4.2004, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



memcpy копирует участки памяти. memcpy(указатель_куда,указатель_откуда,сколько_байт);

Извини уж, по другому обьяснить как то не получается sad.gif
попробую нарисовать.
Код

память:   01010100101010101010010101010111010101010100101001
            ^массив1                      ^массив2
                ^массив1[4]               |--------------|


массив1: адресс первого елемента массива1
массив2: адресс первого елемента массива2
массив1[4]: адресс соответственно пятого елемента массива1
|------| количество байт в массиве2
&массив1[4] указатель на участок памяти с пятого елемента массива1

PS:Нули и единицы в памяти имеют чисто символическое значение
Цитата

Я так понял получилось что-то вроде новой ветки в массиве или как?

К сожалению термин "ветка в массиве" мне не известен..





--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
mr.DUDA
Дата 6.4.2004, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



_hunter, вот пример попроще:
Код
#include <algorithm>
using namespace std;

void main()
{
 int a[] = {1,2,3,4,5,6,7,8};
 int b[] = {10,20,30,40,50};
 copy(b+2, b+4, a+1);
}

скопирует элементы массива "b" с третьего по четвёртый (не по пятый!) в массив "a" (начиная с 2-го элемента массива "a"). Первый аргумент copy - это указатель на первый элемент массива-источника, второй аргумент - указатель на первый элемент за пределами массива-источника (т.е. на элемент-терминатор), третий аргумент - указатель на первый элемент массива-приёмника.

Используя смещения от начала массива, можно копировать с любой позиции любое количество элементов. Тип элементов массива - какой угодно.


--------------------
user posted image
PM MAIL WWW   Вверх
Stalk
Дата 6.4.2004, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 24.1.2004
Где: Украина, харьков

Репутация: нет
Всего: нет



Да я понял с первой попытки, примеры меня только запуталиsmile.gif
Цитата
Ветка в массиве

я имел ввиду что-то вроде этого:
Код

a0|a1|a2|a3|a4|a5|a6|a7|a8|...|an
         a2 0             //ветка
         a2 1
         .......
         a2 m

В общем я уже все понял, спасибо.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.