Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2014, 21:41   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию На основе контейнера vector построить двумерный динамический массив С++

Каким образом можно один двумерный массив скопировать в другой?
На основе контейнера vector построить двумерный динамический массив целых чисел. Выполнить операции ввода элементов в массив, создания копии массива по строкам, создания копии массива по столбцам, копирование выбранной строки или столбца, вывод массива на экран.
Код:
// stl_mtx.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <algorithm>
#include <functional>
#include <fstream>
#include <locale.h>
#include <iterator>

using namespace std;

void main()
{
	setlocale(LC_ALL,"Rus");
	vector <int> v;
	vector <int>::iterator p;
	int x;

	const int n=3;
	int m=4;

	vector<int>matrix[n];
	vector <int>::iterator u;
	ifstream ifile;        
	char fname[30]="D:\\z.txt";
	ifile.open(fname);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			ifile>>x;
			 matrix[i].push_back(x);

		}
	}
	
	ifile.close();  
		for(int i=0;i<n;i++)
		{
			for(p=matrix[i].begin();p!=matrix[i].end();p++)
				cout<<" "<<*p;
			cout<<endl;
		}
vector<int>t[n]; //создаю второй массив

for(int i=0;i<n;i++) //здесь пытаюсь скопировать элементы первого двумерного массива во второй,не получается,как надо поступить?
		{
			for(int j=0;j<m;j++)
		//	for(u=matrix[i].begin();u!=matrix[i].end();u++)
			t[i].push_back(matrix[j].begin());
			//	copy(matrix[i].begin(),matrix[i].end(),t[i].begin());
				//t[i].push_back(u);
			//	x=p;
		//	t[i].push_back(*p);
			
	}
	
	//copy(matrix[0].begin(),matrix[10].end(),t.begin());
//	copy(t.begin(),t.end(),ostream_iterator<int>(cout," "));
		
			cout<<"jhh"<<endl;
		
}
Вероника99 вне форума Ответить с цитированием
Старый 25.05.2014, 17:22   #2
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Я не понимаю,почему оно не работает.Если разглядывать двумерный массив,как например 3 строки одномерных массив(векторов),то к этим одномерным массивам можно применять функцию copy().Исходя из этого я делаю цикл:
Код:
...
vector<int>matrix[n];
...
vector<int>t[n];
...
for(int i=0;i<n;i++)
        {
                   copy(matrix[i].begin(),matrix[i].end(),t[i].begin());
/*т.е здесь i-означает номер строки и таким образом,мы копируем во второй массив сначала первый вектор,потом второй и т.д. Или я что-то не так понимаю???*/
                 }
...
Вероника99 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамический двумерный массив Ilya_L Помощь студентам 3 28.09.2011 04:29
ООП Delphi разработка классов для реализации контейнера на основе структуры"упорядоченный динамический список" naffy Помощь студентам 0 28.06.2011 00:22
двумерный массив в vector Dimarik Общие вопросы C/C++ 1 10.03.2011 15:40
Двумерный динамический массив IceExecutioner Общие вопросы Delphi 1 04.06.2009 08:41