2

重複の可能性:
forループで異なるタイプの2つの変数を宣言することは可能ですか?

このコードを考えてみましょう:

for( std::vector<std::string>::iterator it = myVec.begin(), int i = 3; it < myVec.end(); it++, i++ )
{
// some operations with the vector
}

MSVC 2010で、これをforループでコンパイルするとエラーが発生することに非常に驚きました。MSVSでコンマ演算子の使用は禁止されていますか?

エラーは次のとおりです。

error C2062: type 'int' unexpected 
error C2143: syntax error: missing ';' before ')'

「inti」定義をループから外そうとすると、次のようになります。

error C2440: 'initializing': cannot convert from 'int' to 'std::vector'
4

2 に答える 2

7

コンマ演算子には、オペランドとして2つのが必要です。その右側には、ではなく宣言int i=0のように見えるものがあります。

これを削除すると、という名前の変数intを宣言し、型チェックを行わない変数を割り当てたり作成したりすることになります。std::vector<std::string>::iteratori3

実際には、int i=3;宣言をループの前(およびforループの外)に移動します。

于 2012-11-10T09:27:20.420 に答える
0

forループで2つの異なるデータ型の宣言を行うことはできないため、ベクトルまたはiをループ内にプッシュする必要がありますが、値を割り当てることができます。

于 2012-11-10T09:28:38.763 に答える