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)