for循环中迭代器声明出错

Sad*_*que 1 c++

void catchlabel()
{
    if(vecs.empty())
        return;
    else
    {
    cout << "The Sizeof the Vector is: " << vecs.size() << endl; 
    cout << "Currently Stored Labels: " << endl;
    /* Error 1 */
for ( int i = 1, vector<string>::iterator it = vecs.begin(); it != vecs.end(); ++it , i++) 
             cout << i << ". "<< *it << endl;
            cout << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

1>错误C2146:语法错误:在标识符'it'之前缺少','

如何解决这个问题?

Mar*_*k B 8

您不能在for循环的初始语句中声明多个类型的项,就像您不能将其int i = 1, vector<string>::iterator it = vecs.begin();视为独立语句一样.你必须在循环之外声明其中一个.

由于C语言你从来没有能够在一个语句中声明不同类型的多个变量(尽管指针是一个相当奇怪的例外):

int i, double d;  /* Invalid */

int i, j; /* Valid */
Run Code Online (Sandbox Code Playgroud)

此行为由C++继承,并适用于for循环内的每个语句以及独立语句.