1

我在向量中有一个队列循环,我需要在队列循环中搜索以找到最小索引队列以及最大大小队列。

我正在使用以下代码

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
} 

我有点怀疑是否像下面的代码一样使用{}for eachif 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        
            } 
}

哪一个是正确的,有和没有的有什么区别{}。对不起,如果这是一个愚蠢的问题。我是编程新手。

4

5 回答 5

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块仅包含一个语句,因此不需要大括号(虽然,如果它让您感到困惑,建议使用它们来澄清事情)..

于 2013-03-11T12:47:54.857 回答
3

通常,应用的最佳规则是:

如有任何疑问,请使用 {}

同样适用()

然而,在你的情况下,两者都是等价的。

于 2013-03-11T12:49:14.047 回答
1

它们的运行方式相同,但如果您需要返回并在 if 语句后有多行代码而不必添加 {},则有些人更喜欢以这种方式使用 {}。

于 2013-03-11T12:49:23.697 回答
0

以这种方式使用的括号称为块语句,用于封装一个或多个语句。一个这样的块等于一个语句,它满足期望一个语句作为语句体的解析器if

所以不,两者之间真的没有区别。在一个语句中,您有一个单一的语句,在另一种类型的单一语句中,恰好包含其他语句。

于 2013-03-11T12:50:07.147 回答
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())

于 2013-03-11T12:54:19.580 回答