Created
March 28, 2012 12:49
-
-
Save pogin503/2225874 to your computer and use it in GitHub Desktop.
配列の1次元から4次元までの配列の書き方
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
int main() | |
{ | |
//例1の解決方法 | |
//1~4の多次元配列 | |
try{ | |
//一次元配列の場合(int p[10]) | |
int *p; | |
p = new int[10]; | |
////使い終わったらdeleteする | |
delete [] p; | |
}catch (bad_alloc){ | |
cout << ""; | |
} | |
//二次元配列の場合(int pp[10][11]) | |
try{ | |
int **pp; | |
pp = new int*[10]; | |
for(int ii = 0; ii < 10 ; ii++){ | |
pp[ii] = new int[10]; | |
} | |
////使い終わったらdeleteする | |
//for(int ii = 0; ii < 10; ii++){ | |
// delete [] pp[ii]; // 列を解放 | |
//} | |
//delete [] pp; // 行を解放 | |
//または | |
delete [] pp[0]; | |
delete [] pp; | |
}catch(bad_alloc){ | |
cout << ""; | |
} | |
//三次元配列の場合 (int ppp[10][11][12]) | |
try{ | |
int ***ppp; | |
ppp = new int**[10]; | |
for(int ii = 0; ii < 10; ii++){ | |
ppp[ii] = new int*[11]; | |
for(int jj = 0; jj < 11; jj++){ | |
ppp[ii][jj] = new int[12]; | |
} | |
} | |
////使い終わったらdeleteする | |
//for(int ii = 0; ii < 10; ii++){ | |
// for(int jj = 0; jj < 11; jj++){ | |
// delete [] ppp[ii][jj]; | |
// } | |
// delete [] ppp[ii]; | |
//} | |
//delete [] ppp; | |
//または | |
delete [] ppp[0][0]; | |
delete [] ppp[0]; | |
delete [] ppp; | |
}catch(bad_alloc){ | |
cout << ""; | |
} | |
//四次元配列の場合 (int pppp[10][11][12][13]) | |
try{ | |
int ****pppp; | |
pppp = new int***[10]; | |
for(int ii = 0; ii < 10; ii++) | |
{ | |
pppp[ii] = new int**[11]; | |
for(int jj = 0; jj < 11; jj++) | |
{ | |
pppp[ii][jj] = new int*[12]; | |
for(int kk = 0; kk < 12; kk++) | |
{ | |
pppp[ii][jj][kk] = new int[13]; | |
} | |
} | |
} | |
////使い終わったらdeleteする | |
//for(int ii = 0; ii < 10; ii++){ | |
// for(int jj = 0; jj < 11; jj++){ | |
// for(int kk = 0; kk < 12; kk++){ | |
// delete [] pppp[ii][jj][kk]; | |
// } | |
// delete [] pppp[ii][jj]; | |
// } | |
// delete [] pppp[ii]; | |
//} | |
//delete [] pppp; | |
//または | |
delete [] pppp[0][0][0]; | |
delete [] pppp[0][0]; | |
delete [] pppp[0]; | |
delete [] pppp; | |
}catch(bad_alloc){ | |
cout << ""; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
#include "stdio.h" | |
using namespace std; | |
//typedef vector<double> Mat1DD; | |
//typedef vector<Mat1DD > Mat2DD ; | |
//typedef vector<Mat2DD> Mat3DD ; | |
//typedef vector<Mat3DD> mat4DD ; | |
typedef vector<int> Int1D; | |
typedef vector<Int1D> Int2D ; | |
typedef vector<Int2D> Int3D ; | |
typedef vector<Int3D> Int4D ; | |
void print1D(vector<int>& vec1); | |
void print2D(vector< vector< int> >& vec2); | |
void print3D(vector< vector< vector< int> > >& vec3); | |
void print4D(vector< vector< vector< vector< int > > > >& vec4); | |
void print1D(vector<int> vec1, int idx1){ | |
for(int ii = 0; ii < idx1; ii++){ | |
cout << vec1[ii] << " "; | |
} | |
cout << endl; | |
} | |
void print2D(vector<vector<int > > vec2, int idx1, int idx2){ | |
for(int jj = 0; jj < idx2; jj++){ | |
//cout << "vec2[" << | |
for (int ii = 0; ii < idx1; ii++){ | |
cout << vec2[ii][jj] << " "; | |
} | |
cout << endl; | |
} | |
} | |
void print3D(vector< vector <vector<int > > > vec3, int idx1, int idx2, int idx3){ | |
for( int kk = 0; kk < idx3; kk++ ){ | |
for(int jj = 0; jj < idx2; jj++){ | |
for (int ii = 0; ii < idx1; ii++){ | |
cout << vec3[ii][jj][kk] << " "; | |
} | |
cout << endl; | |
} | |
} | |
} | |
void print4D(vector< vector< vector< vector< int> > > > vec4, int idx1, int idx2, int idx3, int idx4){ | |
for ( int ll = 0; ll < idx4; ll++ ){ | |
for( int kk = 0; kk < idx3; kk++ ){ | |
for(int jj = 0; jj < idx2; jj++){ | |
for (int ii = 0; ii < idx1; ii++){ | |
cout << vec4[ii][jj][kk][ll] << " "; | |
} | |
cout << endl; | |
} | |
} | |
} | |
} | |
void print1D(vector<int>& vec1){ | |
vector<int>::iterator it1; | |
for(it1 = vec1.begin() ; it1 != vec1.end(); it1++){ | |
cout << *it1 << " "; | |
} | |
cout << endl; | |
} | |
void print2D(vector<vector<int > >& vec2){ | |
vector< vector< int> >::iterator it2; | |
for( it2 = vec2.begin(); it2 != vec2.end(); it2++){ | |
vector< int>::iterator it1; | |
for (it1 = (*it2).begin(); it1 != (*it2).end(); it1++){ | |
cout << *it1 << " "; | |
} | |
cout << endl; | |
} | |
} | |
void print3D(vector< vector <vector<int > > >& vec3){ | |
vector< vector< vector< int> > >::iterator it3; | |
for( it3 = vec3.begin(); it3 != vec3.end(); it3++ ){ | |
vector< vector< int> >::iterator it2; | |
for( it2 = (*it3).begin(); it2 != (*it3).end(); it2++){ | |
vector< int>::iterator it1; | |
for ( it1 = (*it2).begin(); it1 != (*it2).end(); it1++){ | |
cout << *it1 << " "; | |
} | |
} | |
} | |
} | |
void print4D(vector< vector< vector< vector< int> > > >& vec4){ | |
int ii, jj, kk, ll; | |
ii = jj = kk = ll = 0; | |
vector< vector< vector< vector< int> > > >::iterator it4; | |
for ( it4 = vec4.begin(); it4 != vec4.end(); it4++, ll++){ | |
vector< vector< vector< int> > >::iterator it3; | |
for( it3 = (*it4).begin(); it3 != (*it4).end(); it3++, kk++){ | |
vector< vector< int> >::iterator it2; | |
for( it2 = (*it3).begin(); it2 != (*it3).end(); it2++, jj++){ | |
vector< int>::iterator it1; | |
for ( it1 = (*it2).begin(); it1 != (*it2).end(); it1++, ii++){ | |
cout << *it1 << " "; | |
} | |
printf("(i j k l) => (%d %d %d %d)\n",ii,jj,kk,ll); | |
} | |
} | |
} | |
} | |
void insert1D(vector<int>& vec1){ | |
int idx1 = vec1.size(); | |
for(int ii = 0; ii < idx1; ii++){ | |
vec1.push_back(ii); | |
} | |
} | |
void insert2D(vector< vector< int> >& vec2){ | |
int idx1 = vec2.size(); | |
int idx2 = vec2[0].size(); | |
for(int jj = 0; jj < idx2; jj++){ | |
for(int ii = 0; ii < idx1; ii++){ | |
vec2[ii].push_back(jj); | |
} | |
} | |
} | |
void insert3D(vector< vector< vector< int> > >& vec3){ | |
int idx1 = vec3.size(); | |
int idx2 = vec3[0].size(); | |
int idx3 = vec3[0][0].size(); | |
for(int kk = 0; kk < idx3; kk++){ | |
for(int jj = 0; jj < idx2; jj++){ | |
for(int ii = 0; ii < idx1; ii++){ | |
vec3[ii][jj].push_back(kk); | |
} | |
} | |
} | |
} | |
void insert4D(vector< vector< vector< vector< int> > > >& vec4){ | |
int idx1 = vec4.size(); | |
int idx2 = vec4[0].size(); | |
int idx3 = vec4[0][0].size(); | |
int idx4 = vec4[0][0][0].size(); | |
for(int ll = 0; ll < idx4; ll++){ | |
for(int kk = 0; kk < idx3; kk++){ | |
for(int jj = 0; jj < idx2; jj++){ | |
for(int ii = 0; ii < idx1; ii++){ | |
vec4[ii][jj][kk].push_back(ll); | |
} | |
} | |
} | |
} | |
} | |
//void print1D(int &vec1, int idx1){ | |
// for(int ii = 0; ii < idx1; ii++){ | |
// cout << vec1 + ii << endl; | |
// } | |
//} | |
int main(){ | |
int idx1 = 10; | |
int idx2 = 11; | |
int idx3 = 12; | |
int idx4 = 13; | |
//一次元配列 | |
// vector<int> vec1(idx1, 1); | |
Int1D vec1(idx1, 1); | |
//二次元配列 | |
// vector< vector<int> > vec2(idx2, vector<int>(idx1, 2)); | |
Int2D vec2(idx2, Int1D(idx1, 2)); | |
//三次元配列 | |
// vector< vector< vector<int> > > vec3(idx3, vector< vector<int>>(idx2, vector<int>(idx1, 3))); | |
Int3D vec3(idx3, Int2D(idx2, Int1D(idx1, 3))); | |
//四次元配列 | |
// vector< vector <vector <vector<int> > > > vec4(idx4, vector<vector<vector<int>>>(idx3, vector< vector< int> >(idx2, vector<int>(idx1, 4)))); | |
Int4D vec4(idx4, Int3D(idx3, Int2D(idx2, Int1D(idx1, 4)))); | |
cout << endl; | |
insert1D(vec1); | |
print1D(vec1); | |
insert2D(vec2); | |
print2D(vec2); | |
insert3D(vec3); | |
print3D(vec3); | |
insert4D(vec4); | |
print4D(vec4); | |
getchar(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment