我在向量中有一个队列循环,我需要在队列循环中搜索以找到最小索引队列以及最大大小队列。
我正在使用以下代码
int min_index = 0;
int max_size = -1;
std::size_t size = q.size();
for( i=0; i<size; i++){ //accessing loop of queues
if(q[min_index].size() > q[i].size())
min_index = i; // Now q[min_index] is min_index is the minimum size queue
if(q[i].size() > max_size)
max_size = q[i].size(); // maximum size queue
}
我很怀疑是否对每个{}
使用if statement
,如下面的代码
int min_index = 0;
int max_size = -1;
std::size_t size = q.size();
for( i=0; i<size; i++){ //accessing loop of queues
if(q[min_index].size() > q[i].size()){
min_index = i; // Now q[min_index] is the shortest queue
}
if(q[i].size() > max_size){
max_size = q[i].size(); // longest queue
}
}
哪一个是正确的,有没有{}
会有什么区别。对不起,如果这是一个愚蠢的问题。我是编程新手。
答案 0 :(得分:4)
在您的情况下,两个代码之间存在无差异。
if(SOMETHING)
DO_SOMETHING;
与
是相同if(SOMETHING) {
DO_SOMETHING;
}
但是
if(SOMETHING)
DO_SOMETHING_1;
DO_SOMETHING_2; //DO_SOMETHING_2 will be performed whether the `if` condition
//is satisfied or not
不与
相同 if(SOMETHING) {
DO_SOMETHING_1;
DO_SOMETHING_2; //DO_SOMETHING_2 will be performed only if the `if` condition
} //is satisfied, since it is inside the curly parentheses
在您的情况下,由于if
块只包含一个语句,因此不需要卷曲括号(虽然,如果它让您感到困惑,建议使用它们来澄清事情 )..
答案 1 :(得分:3)
通常,最适用的规则是:
如有任何疑问,请使用{}
()
但在你的情况下,两者都是等价的。
答案 2 :(得分:1)
它们会运行相同的但是如果你需要返回并且在if语句后面有多行代码而不需要添加{},那么有些人更喜欢使用{}。 / p>
答案 3 :(得分:0)
以这种方式使用的括号称为块语句,用于封装一个或多个语句。一个这样的块等于一个语句,它满足了将一个语句作为if
语句的主体的解析器。
所以不,两者之间确实没有区别。在一个中,你有一个单独的语句,在另一个单一语句中,恰好包含其他语句。
答案 4 :(得分:0)
没有区别:
int min_index = 0;
int max_size = -1;
std::size_t size = q.size();
for( i=0; i<size; i++){ //accessing loop of queues
if(q[min_index].size() > q[i].size())
min_index = i; // Now q[min_index] is min_index is the minimum size queue
if(q[i].size() > max_size)
max_size = q[i].size(); // maximum size queue
}
唯一的区别是,如果你想在if中编写多行,例如
if(q[min_index].size() > q[i].size())
min_index = i;
++i;
在这种情况下,如果min_index = i;
为真,则只会调用if(q[min_index].size() > q[i].size())
行。