コンテンツにスキップ

C++/範囲ベースfor

出典: フリー教科書『ウィキブックス(Wikibooks)』
< C++

はじめに

[編集]

この章では、C++の範囲ベースforループの使い方を解説します。

範囲ベースforループはC++11で導入され、従来のforループよりもシンプルにコンテナや配列の要素を反復処理できます。基本構文から応用まで、実用的な情報を紹介します。

範囲ベースforループの基礎

[編集]

概要

[編集]

範囲ベースforループは、C++11で追加された構文で、コンテナや配列の要素を簡潔に処理できます。インデックスやイテレータの管理が不要になり、コードの可読性が向上します。

基本構文

[編集]
for (const auto& element : container) {
    // 処理内容
}

containerはイテレートする対象、elementは要素を指します。変更不要ならconst修飾子を使用します。

応用

[編集]

対応データ構造

[編集]
配列
配列はそのまま使用可能です。
int array[] = {1, 2, 3, 4, 5};
for (auto element : array) {
    // 処理
}
STLコンテナ
std::vectorstd::listなどに対応。
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto element : vec) {
    // 処理
}

入れ子構造への適用

[編集]

多次元データにも利用できます。

std::vector<std::vector<int>> matrix = {{1, 2}, {3, 4}, {5, 6}};
for (const auto& row : matrix) {
    for (auto element : row) {
        // 処理
    }
}

参照を使って要素の変更

[編集]

要素を変更するには参照を使用します。

std::vector<int> numbers = {1, 2, 3, 4, 5};
for (int& num : numbers) {
    num *= 2;
}

メリットと注意点

[編集]

範囲ベースforループは可読性や安全性を向上させますが、ループ内でイテレータを無効化しないよう注意が必要です。