0
set<unsigned int> setId;
vector<int> vecNode;
for (size_t i = 0,set<unsigned int>::iterator it = setId.begin(); i < vecNode.size() && it != setId.end(); i++,it++ ){}

コンパイラ レポート: エラー: テンプレート パラメータ リストが少なすぎます

しかし、私がこのように書くと:

set<unsigned int> setId;
vector<int> vecNode;
size_t i = 0;
for (set<unsigned int>::iterator it = setId.begin(); i < vecNode.size() && it != setId.end(); i++,it++ ){}

コンパイルは成功します。

なぜ?

4

1 に答える 1

4

できないのと同じ理由

int i = 0, float j = 2.64f;  // ERROR!

size_t i = 0, set<unsigned int>::iterator it = setId.begin()

あなたは実際に上記の例のようなことをしています.2つの変数を定義していますが、タイプは異なりsize_tますset<unsigned int>::iterator.

できるところ

int i = 0, j = 1;  // OK

次のようなことも許可されています

for(size_t i = 0, j = 2; ...; ...) ...

for ループ ステートメントで。i両方の例でj、両方とも同じ型でintあり、size_tそれぞれです。

于 2013-08-13T04:55:04.683 に答える