コード:
#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;
}
書き上げてから、c++じゃなくて、Cか…と思ったけど、折角書いたので。
Visual C++ 2008とかでも、動くようにauto変数とかfor range-based loopsとかは使ってません。
Visual C++ 2012とか、clang++ の新しいのとか、gccの新しいのなら
したのでも可能かと。
コード:
#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;
}