-1
をクラッシュさ:は、私のコードはバグがあるので、私は、プログラミングベクトルに新たなんだ私のプログラム
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main()
{
std::ifstream in("input.txt");
std::vector<std::vector<int> > v, w;
if (in) {
std::string line;
while (std::getline(in, line)) {
v.push_back(std::vector<int>());
for(int x=0; x<line.size(); x++){
v.back().push_back((int)line[x] - (int)'0');
}
}
}
for (int i = 0; i < v.size(); i++) {
for (int j = 0; j < v[i].size(); j++)
std::cout << v[i][j] << ' ';
std::cout << '\n';
}
int size = v.size(); //because its a square matrix
w = v; //w is our temp vector for storing new values;
int alive =0;
int z=0;
for (int i=0;i<size;i++)
{
for (int j=0;j<size; j++)
{
alive = 0;
for(int c = -1;c<2; c++)
{
for(int d = -1; d<2 ; d++)
{
if(!(c==0 && d == 0))
{
z = v[i+c][j+d];
if(z)
++alive;
}
}
if(alive<2) w[i].push_back(0);
else if(alive == 3) w[i].push_back(1);
else w[i].push_back(0);
}
}
}
return 0;
}
私は私の第二の可変間違っに値を代入していますね。私のプログラムは、線に沿って入力ファイルから読み込み:
1010101
0101010
1010101
とその隣人(生活の問題のゲーム)を分析した後、第2のベクトルw
に書き込むことです、私は私がw.push_back()
を使うべきだと思うが、私はよく分かりません2Dベクトルの構文について解説します。変数をプッシュする良い方法はありますか?
'Z = V [J + D] [私はCを+];' - 'Z = v.at(私にそれを変更します+ c).at(j + d); ' - スローされている' std :: out_of_range'例外を診断します。 – PaulMcKenzie