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++ ){}
编译成功。
为什么?
答案 0 :(得分:5)
与你不能做的原因相同
int i = 0, float j = 2.64f; // ERROR!
使用
size_t i = 0, set<unsigned int>::iterator it = setId.begin()
您实际上正在执行类似上述示例的操作,您正在定义两个不同类型的变量,即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
。