二次元配列のポインタはどうやってやるんですか?
Posted: 2013年1月25日(金) 18:54
#include<stdio.h>
main() {
void point( int (*a)[8] );
int a[8][8] = {0};
int i,j;
point( a );
for( i = 0; i < 8; i++ ) {
for( j = 0; j < 8; j++ ) {
printf( "%d, ", a[i][j] );
}
printf( "\n" );
}
}
void point( int (*a)[8] ) {
a[4][4] = 1;
}#include <iostream>
#include <vector>
typedef std::vector<int> oneD;
typedef std::vector< oneD > twoD;
void pointReset(twoD& t)
{
t[4][4]=99;
}
int main(int argc,char* argv[])
{
twoD array(8, oneD(8,1));
pointReset(array);
for(twoD::iterator iter= array.begin();iter != array.end();iter++)
{
for(oneD::iterator inner = iter->begin();inner != iter->end();inner++)
{ std::cout<< *inner <<", ";}
std::cout<<std::endl;
}
return 0;
}
#include <iostream>
#include <vector>
typedef std::vector<int> oneD;
typedef std::vector< oneD > twoD;
void pointReset(twoD& t)
{ t[4][4]=99; }
int main(int argc,char* argv[])
{
twoD array(8, oneD(8,1));
pointReset(array);
for(auto outer: array)
{
for(auto inner: outer)
{ std::cout<< inner <<", ";}
//range-based for loopsだと、
//Iteratorじゃなくて実体が来るのでinnerの前の* が消える。
std::cout<<std::endl;
}
return 0;
}