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()

你实际上是在做类似上面例子的事情,你定义了两个变量,但类型不同,即size_tand 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 回答