ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
C++で配列をfor文で走査するには、添字を0から要素数 - 1まで動かす通常のfor文を使うか、要素を直接取り出す範囲for文(for (int x : a))を使います。ここではどちらの書き方も、配列の宣言から具体的な走査例、つまずきやすい落とし穴まで順に整理します。
| この記事の要点 |
|---|
|
配列の宣言
配列は、同じ型の値を連続して並べて扱うためのものです。宣言では型・名前・要素数を指定します。次の例はint型の要素を5個持つ配列aを宣言します。
|
int a[5]; // int型の要素を5個持つ配列 |
各要素にはa[0]、a[1]、…のように添字(インデックス)でアクセスします。添字は0から始まるため、要素数が5個なら有効な添字は0から4までです。宣言と同時に値を並べて初期化することもできます。
|
int a[5] = {10, 20, 30, 40, 50}; |
通常のfor文での走査
配列のすべての要素を順に処理する最も基本的な方法が、添字を動かす通常のfor文です。添字iを0から始め、i < 要素数の条件で繰り返し、各回でa[i]にアクセスします。条件をi <= 要素数ではなくi < 要素数とする点が重要です。
|
#include <iostream> int main() { int a[5] = {10, 20, 30, 40, 50}; for (int i = 0; i < 5; i++) { |
実行すると、各要素が1行ずつ出力されます。
|
10 |
この書き方では添字iそのものを使えるため、「何番目の要素か」を処理に利用したい場合や、要素を書き換えたい場合に向いています。
範囲for文での走査
要素を先頭から順に取り出すだけでよい場合は、範囲for文(range-based for)が簡潔です。添字や要素数を書く必要がなく、配列の全要素を1つずつ変数に取り出して処理できます。
|
#include <iostream> int main() { int a[5] = {10, 20, 30, 40, 50}; for (int x : a) { |
出力は通常のfor文の例と同じです。for (int x : a)と書くと、xには各要素のコピーが入ります。そのためxを書き換えても、元の配列aの中身は変わりません。
配列の要素そのものを書き換えたい場合は、変数を参照として受け取ります。型に&を付けてfor (int& x : a)と書きます。
|
int a[5] = {10, 20, 30, 40, 50}; for (int& x : a) { // a は {20, 40, 60, 80, 100} になる |
要素を書き換えずに読み取るだけなら、コピーを避けつつ変更を禁止できるconst int& xもよく使われます。intのような小さな型では差はわずかですが、サイズの大きな型を要素に持つ配列では効果があります。
| 通常のfor文と範囲for文の使い分け |
|---|
|
配列サイズの扱い
通常のfor文では繰り返し条件に要素数が必要です。上の例では5という数値を直接書きましたが、要素数を変えたときに条件側の修正を忘れると不具合の原因になります。要素数は値を直接書くのではなく、求めて使うほうが安全です。要素数の具体的な求め方は配列の要素数で詳しく解説しています。
なお、範囲for文は内部で配列の要素数を自動的に扱うため、要素数を書く必要がありません。これも範囲for文の利点の1つです。
多次元配列の場合
行と列を持つ二次元配列のように、配列を入れ子にした多次元配列では、for文も入れ子にして走査します。書き方は一次元の場合と考え方は同じですが、添字が増える分の注意点があります。多次元配列の宣言と走査については多次元配列とfor文を参照してください。
初期化と走査の例
実際の処理では、配列を初期化したうえで走査し、合計や最大値などを求めることがよくあります。次の例は、配列の全要素の合計を通常のfor文で求めます。
|
#include <iostream> int main() { int a[5] = {10, 20, 30, 40, 50}; int sum = 0; std::cout << "合計: " << sum << "\n"; |
同じ合計は、読み取るだけなので範囲for文でも書けます。
|
int a[5] = {10, 20, 30, 40, 50}; int sum = 0; |
落とし穴
| 注意すべきポイント |
|---|
|
よくある質問
Q. 通常のfor文と範囲for文はどちらを使うべきですか?
A. 全要素を先頭から順に処理するだけなら範囲for文が簡潔で、要素数の書き間違いや範囲外アクセスを避けやすくなります。一方、何番目の要素かを使いたい、逆順に走査したい、一部の要素だけ処理したいといった場合は、添字を扱える通常のfor文が適しています。
Q. 範囲for文で要素を書き換えても元の配列が変わりません。
A. for (int x : a)のxは各要素のコピーのため、xを変更しても元の配列には反映されません。元の要素を書き換えたい場合は、参照で受け取るfor (int& x : a)と書きます。
Q. 配列の要素数を直接書かずに走査したいです。
A. 範囲for文を使えば要素数を書かずに全要素を走査できます。通常のfor文で要素数が必要な場合は、数値を直接書くのではなく要素数を求めて使うと、要素数を変えたときの修正漏れを防げます。求め方は配列の要素数を参照してください。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?