質問するログイン新規登録
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

678閲覧

for loop文のシンタックスについて

Sota2021

総合スコア6

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/04/03 09:08

0

0

for loopのシンタックスは for(statement1;statement2;statement3) だけだと思っていたのですが、以下のように使われているのを見て、混乱しています。この場合シンタックスはどうなっているのでしょうか?
また、for文の引数にconstをつけているのはどういった意図なのでしょうか?よろしくお願いいたします。

c++

1#include<iostream> 2#include<vector> 3using namespace std; 4 5int main() 6{ 7 //Declaration and initialization of vector 8 vector<int> num{ 1,2,3,4,5 }; 9 10 cout << "Initial elements "; 11 12 //this "for" is to display elements of vector 13 for(const int& i : num) 14 { 15 cout << i << ' '; 16 } 17 18 return 0; 19}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

いわゆる range-based for と呼ばれる構文です。

cpp

1for ( for-range-declaration : braced-init-list ) statement

という形式の構文は

cpp

1{ 2 auto && __range = range-init; 3 for ( auto __begin = begin-expr, 4 __end = end-expr; 5 __begin != __end; 6 ++__begin ) { 7 for-range-declaration = *__begin; 8 statement 9 } 10}

の構文糖であるかのように解釈されます。 (ここで下線付きで示した名前は説明の便宜上の名前であり、ユーザからは決してアクセスできない存在です。)

要するに関数 beginend を暗黙に呼び出してイテレータを取得し、そのイテレータを通じて要素にアクセスしているわけです。 const int& i の部分は要素を const int の参照として受けるという意味すね。

投稿2022/04/03 09:27

SaitoAtsushi

総合スコア5740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sota2021

2022/04/04 12:39

ご回答ありがとうございます。このような構文もあるんですね。勉強になりました!
guest

0

リストの要素を一つ一つ取り出して変数に代入するときの書き方

C++

1for (<代入したい変数> : <リスト>) 2{ 3 //処理 4}

const に関しては以下を
https://github.com/asciidwango/js-primer/issues/567

投稿2022/04/03 09:23

Gfk_L

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sota2021

2022/04/04 12:41

分かりやすかったです!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問