見出し画像

ゲーム制作に使えるc言語#7

c言語でのforeachループ

Unityでforeachループを使ったことはありますか?
一度は使ったことがあるのではないでしょうか。
その便利なforeachループのc言語での使い方を書いていきます。

foreachループとは
最初から最後まで、全ての要素を順番に、1つ1つ取得することができるループ

Unityでの使い方(c#での使い方)
foreachループを使ったことがない人のためにforeachループの使い方を書いておきます。

画像1

このようにすると、変数名から配列の要素が順番に取得できます。

画像2


forループでこのように書くより簡単になっています。
私は、配列の番号が必要になるのであればforで書いて、必要にならないならforeachで書いています。

Unityでの使い方もわかったと思うので、c言語での使い方を書いていきます。

c言語でのforeach
c言語でもあまり変わりません。

画像3

普通のfor文が少し変わっただけです。

実際にどのように動くのか見てみましょう。

1〜9までの数字を表示するプログラムでテストしてみます。

画像4

画像5

1から9まで順番に表示されたので成功です。

変数名が長い場合
型が構造体で、名前が長くて書くのがめんどくさいことがあると思います。
そんな時は、auto型を使いましょう。

画像6

先ほどのコードの変数の型をautoに変えました。

画像7

出力は何も変わっていないので成功です。

これは動的配列でも使用できます。

画像8

int配列をstd::vectorに変えました。

画像9

出力は変わっていません。

2次元配列
2次元配列での使用方法を書いていきます。

画像10


2次元配列は、普通のfor文と同じように、for文が2つ必要になります。

画像11


出力はできています。

for文1つでできるようになって欲しいですね。

連想配列での使用方法
次はstd::mapでの使い方を説明していきます。

画像12

キーは文字で、要素を数にしました。
firstでキーを取得して、secondで要素を取得して、出力しています。

画像13

出力は成功しています。

まとめ
今回は、配列の数が決まってたので、for文でもできたのですが、std::vectorを使わない配列の場合、配列の数を数え間違て、エラーが出ることがあるので、このように書くとエラーが出にくくなります。

2次元配列はどうしてもfor文が2つ必要になります。

Unityでもc言語でもすごく便利なので使ってみてください。

配列の番号の取得方法は

autoはポインタなので、変数を変更する場合は注意して変更してください。