在括号中定义变量

use*_*923 1 c++ scope for-loop declaration

我不明白为什么变量i在一开始就不为人所知.如何在括号中定义变量?(如果使用int i我仍然会收到错误)

void cardlike(vector<int> &v)
{
        unsigned max_pos = 0;
        int tmp;
        for (unsigned i = 0; i < v.size(); i++);
        {
                for (unsigned j = 0; j < v.size() - i; j++)
                        if(v[j] > v[max_pos])
                                max_pos = j;

                tmp = v[max_pos];
                v[max_pos] = v[v.size() - i - 1];
                v[v.size() - i - 1] = tmp; 
        }
}
Run Code Online (Sandbox Code Playgroud)

当我用-std = c ++ 11编译时,这就是我从g ++中得到的:

sortvector.cpp:93:38: error: ‘i’ was not declared in this scope   
   for(unsigned j = 0; j < v.size() - i; j++)
                                      ^
sortvector.cpp:98:29: error: ‘i’ was not declared in this scope   
   v[max_pos] = v[v.size() - i - 1];
                             ^
Run Code Online (Sandbox Code Playgroud)

Cor*_*mer 10

for循环后你有一个不必要的半冒号

for (unsigned i = 0; i < v.size(); i++);
Run Code Online (Sandbox Code Playgroud)

去掉它

for (unsigned i = 0; i < v.size(); i++)
Run Code Online (Sandbox Code Playgroud)

另外,如果你有一个多线for循环,你真的应该使用{}大括号

for (unsigned j = 0; j < v.size() - i; j++)
                        if(v[j] > v[max_pos])
                                max_pos = j;
Run Code Online (Sandbox Code Playgroud)

for (unsigned j = 0; j < v.size() - i; j++)
{
    if(v[j] > v[max_pos])
        max_pos = j;
}
Run Code Online (Sandbox Code Playgroud)