アップデート:
この議論は予想以上に進んだので、この質問が頭に浮かんだときに実際に取り組んでいたコードでこれを更新しています。C++ 入門コースの三目並べゲームの勝者を決定するのは、8 行から 16 行のコードの決定でした。
注:これは、コースと同じレベルになるように設計されています。
注 2:トークンは、x または o または ' ' のいずれかの文字です)
これは最適化の問題です。これが繰り返しの場合は申し訳ありませんが、他の場所で答えを見つけることができませんでした.
基本的には、次のコードをループしたほうがよいかどうかにかかっていました。
char CheckForWinner() {
//returns the token of the player that satisfies one of the winning requirements
if (Square[0][0] == Square[0][1] && Square[0][0] == Square[0][2] ) { //If all three tokens in the first row are the same
return Square[0][0]; //Return the token
} else if (Square[1][0] == Square[1][1] && Square[1][0] == Square[1][2] ) { //Check the next row
return Square[1][0]; //Return the token
} else if (Square[2][0] == Square[2][1] && Square[2][0] == Square[2][2] ) {
return Square[2][0];
} else if (Square[0][0] == Square[1][0] && Square[0][0] == Square[2][0] ) { //If no rows satisfy conditions, check columns
return Square[0][0]; //Return the token
} else if (Square[0][1] == Square[1][1] && Square[0][1] == Square[2][1] ) {
return Square[0][1];
} else if (Square[0][2] == Square[1][2] && Square[0][2] == Square[2][2] ) {
return Square[0][2];
} else if (Square[0][0] == Square[1][1] && Square[0][0] == Square[2][2] ) { //finally, check diagonals
return Square[0][0];
} else if (Square[0][2] == Square[1][1] && Square[0][2] == Square[2][0] ) {
return Square[0][2];
}
return ' ';
}
これは、単に 100 行の cout を入力するだけで、システムに多かれ少なかれ負担がかかりますか?
100 の cout 行を実行するだけでなく、新しい変数をメモリに割り当て、コンピュータに 100 の数式を処理させてデータを出力させるように見えるので、興味深いです。
コンパイラがある程度の最適化を提供する可能性があることは理解できますが、より一般的なレベルで知りたいと思います。主に、VisualStudio 2012 または MingGW (g++) を使用してコンパイルします。