фразу слово все слова
 On-line: гостей 1. Всего: 1 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение
Отправлено: 15.07.14 20:16. Заголовок: 2D vector to 3D

i have a 2D vector that contain data like

[0][1] = 11
[0][2] = 10
[0][3] = 12

[1][1] = 54
[1][2] = 65
[1][3] = 46

[2][1] = 524
[2][2] = 655
[2][3] = 446

i like to add this 2D vector data to a 3D vector how can i do this in a perfect way

 Спасибо: 0
Ответов - 5 [только новые]

Отправлено: 15.07.14 21:17. Заголовок: Having one two-dimen..

Having one two-dimensional array you can create a 3D vector only with one element. For example

`  #include <iostream>  #include <vector>  #include <iterator>  #include <algorithm>    int main()  {  	const size_t N = 3;  	int a[N][N] =   	{  		{  11,  10,  12 },  		{  54,  65,  46 },  		{ 524, 655, 446 }  	};    	std::vector<std::vector<std::vector<int>>> v( 1 );    	std::transform( std::begin( a ), std::end( a ), std::back_inserter( v[0] ),  		[]( const int ( &row )[N] )   		{   			return std::vector<int>( std::begin( row ), std::end( row ) );  		} );    	std::for_each( v[0].begin(), v[0].end(),  		[]( const std::vector<int> &v1 )  		{  			std::copy( v1.begin(), v1.end(), std::ostream_iterator<int>( std::cout, " " ) );  			std::cout << std::endl;  		} );    	/* Or using range-based for statements   	for ( const std::vector<int> &v1 : v[0] )  	{  		for ( int x : v1 ) std::cout << x << ' ';  		std::cout << std::endl;  	}  	*/  }  `

The output is
`  11 10 12  54 65 46  524 655 446  `

If the 2D vector is not an array but in turn an object of type std::vector<std::vector<int>> then you can simply use push_back method.. For example
`  std::vector<std::vector<std::vector<int>>> v;  std::vector<std::vector<int>> v1;    //... some code of filling v1    v.push_back( v1 );  `

 Спасибо: 0
Отправлено: 16.07.14 07:47. Заголовок: how can i control in..

how can i control index of 3d vector to pushback 2D vector to it i don't get complete idea of 3D vector.
for example if we creating a 2D array we use two for loop to control index (column index & row index )
if i use your last method to pushback 2D vector. in 3D vector --> [0][0][1] , [0][0][2] i like to manipulate other index to how can i do that

 Спасибо: 0
Отправлено: 16.07.14 20:23. Заголовок: I have not understoo..

I have not understood what is unclear for you. You can use vectors as arrays accessing their elements by indices. 3D vector contains 2D vectors. So for example if v is 3D vector then v[0] provides access to the first 2D vector, v[1] provides access to the next 2D vector.

 Спасибо: 0
Отправлено: 17.07.14 08:10. Заголовок: i ask you how i wri..

i ask you how i write for loop for that to access [0][0][1],[0][1][1],[1][1][1] . i got it thanks.
is there any better way of doing this please show me .
`
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;

int main ()
{
vector < vector < vector<int> > > tube;
for(int i = 0; i < 2; i++)
{
vector < vector < int > > w;
tube.push_back( w );
for(int j = 0; j < 4; j++)
{
vector <int> v;
tube[ i ].push_back( v );
for(int k = 0; k < 15; k++)
{
tube[ i ][ j ].push_back( rand());
}
}
}

for (size_t i = 0; i < tube.size(); i++)
for (size_t j = 0; j < tube[ i ].size(); j++)
for (size_t k = 0; k < tube[ i ][ j ].size(); k++)
cout << "tube[" << i << "][" << j << "][" << k << "] = " << tube[ i ][ j ][ k ] << endl;
}
`

 Спасибо: 0
Отправлено: 17.07.14 21:43. Заголовок: In fact that or othe..

In fact that or other way you have to use loops. In C++ 11 I would write the code the following way

`  #include <iostream>  #include <vector>  #include <algorithm>  #include <cstdlib>  #include <ctime>    int main()   {  	size_t K = 2;  	size_t N = 4;  	size_t M = 15;  	std::vector<std::vector<std::vector<int>>> v( K );    	std::srand( ( unsigned int )std::time( 0 ) );    	for ( std::vector<std::vector<int>> &w : v )  	{  		w.assign( N, std::vector<int>( M, 0 ) );  		for ( std::vector<int> &u : w )  		{  			std::generate( u.begin(), u.end(), []{ return std::rand() % 10; } );  		}  	}  	  	for ( const std::vector<std::vector<int>> &w : v )  	{  		for ( const std::vector<int> &u : w )  		{  			for ( int x : u ) std::cout << x << ' ';  			std::cout << std::endl;  		}  		std::cout << std::endl;  	}    	return 0;  }  `

The output is
`  9 1 5 7 9 8 3 4 9 9 3 6 8 7 6   9 0 1 5 9 2 1 1 3 3 4 7 7 2 3   2 3 6 8 0 7 6 3 2 7 4 7 3 2 4   0 1 4 3 8 3 7 9 6 0 3 1 9 2 5     4 4 8 3 4 8 0 2 3 4 9 7 3 3 1   7 5 4 4 0 2 9 7 1 6 9 6 9 0 8   6 4 5 4 7 9 4 8 2 7 4 1 6 8 6   7 7 1 1 1 3 5 3 0 6 9 1 5 0 1   `

 Спасибо: 1
Ответ:
1 2 3 4 5 6 7 8 9

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться
 Тему читают:
 - участник сейчас на форуме - участник вне форума Все даты в формате GMT  3 час. Хитов сегодня: 36 Права: смайлы да, картинки да, шрифты да, голосования нет аватары да, автозамена ссылок вкл, премодерация откл, правка нет