「double」のinit-expressionを使用してforループを作成する方法はありますか?
vector<int> v;
//...vector filling...
for (vector<int>::iterator i = v.begin() AND vector<int>::iterator e = v.end(); i != e; ++i){ ...}
「double」のinit-expressionを使用してforループを作成する方法はありますか?
vector<int> v;
//...vector filling...
for (vector<int>::iterator i = v.begin() AND vector<int>::iterator e = v.end(); i != e; ++i){ ...}
確かに、コンマを使用してください:
vector<int> v;
// ...
for (vector<int>::iterator i = v.begin(), e = v.end(); i != e; ++i)
{
}
これが「機能する」理由は、ステートメントの定義方法によるものです(わかりやすくするためfor
に、暗黙の後にセミコロンを追加しました)。for-init-statement
for (
expression -statementまたはsimple- declarationconditionopt;
expression opt;
)
単純な宣言は、型の後にコンマで区切られた宣言子のリスト(識別子、ポインター/参照/配列表記、およびオプションの初期化子)が続くものです。
はいあります:
#include <iostream>
int main() {
for (int i=0, j=10; i<10; ++i, ++j) {
std::cout << i << ", " << j << "\n";
}
}
ただし、コンマ演算子を使用する必要があるため、初期化する変数のタイプは同じである必要があります。
カンマを使用します。
for (vector<int> i = v.begin(), e = v.end(); i != e; ++i){ ...}