Skip to content

Instantly share code, notes, and snippets.

@pogin503
Created March 28, 2012 12:49
Show Gist options
  • Save pogin503/2225874 to your computer and use it in GitHub Desktop.
Save pogin503/2225874 to your computer and use it in GitHub Desktop.
配列の1次元から4次元までの配列の書き方
#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 << "";
}
}
#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