ゲーム制作に使えるc言語#7
c言語でのforeachループ
Unityでforeachループを使ったことはありますか?
一度は使ったことがあるのではないでしょうか。
その便利なforeachループのc言語での使い方を書いていきます。
foreachループとは
最初から最後まで、全ての要素を順番に、1つ1つ取得することができるループ
Unityでの使い方(c#での使い方)
foreachループを使ったことがない人のためにforeachループの使い方を書いておきます。
このようにすると、変数名から配列の要素が順番に取得できます。
forループでこのように書くより簡単になっています。
私は、配列の番号が必要になるのであればforで書いて、必要にならないならforeachで書いています。
Unityでの使い方もわかったと思うので、c言語での使い方を書いていきます。
c言語でのforeach
c言語でもあまり変わりません。
普通のfor文が少し変わっただけです。
実際にどのように動くのか見てみましょう。
1〜9までの数字を表示するプログラムでテストしてみます。
1から9まで順番に表示されたので成功です。
変数名が長い場合
型が構造体で、名前が長くて書くのがめんどくさいことがあると思います。
そんな時は、auto型を使いましょう。
先ほどのコードの変数の型をautoに変えました。
出力は何も変わっていないので成功です。
これは動的配列でも使用できます。
int配列をstd::vectorに変えました。
出力は変わっていません。
2次元配列
2次元配列での使用方法を書いていきます。
2次元配列は、普通のfor文と同じように、for文が2つ必要になります。
出力はできています。
for文1つでできるようになって欲しいですね。
連想配列での使用方法
次はstd::mapでの使い方を説明していきます。
キーは文字で、要素を数にしました。
firstでキーを取得して、secondで要素を取得して、出力しています。
出力は成功しています。
まとめ
今回は、配列の数が決まってたので、for文でもできたのですが、std::vectorを使わない配列の場合、配列の数を数え間違て、エラーが出ることがあるので、このように書くとエラーが出にくくなります。
2次元配列はどうしてもfor文が2つ必要になります。
Unityでもc言語でもすごく便利なので使ってみてください。
配列の番号の取得方法は
autoはポインタなので、変数を変更する場合は注意して変更してください。