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 eachを使用するかどうか少し疑問があります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        
            } 
}

どちらが正しいか、 がある場合とない場合の正確な違いは何でしょう{}。ばかげた質問でしたら申し訳ありません。私はプログラミングが初めてです。

4

5 に答える 5

4

あなたの場合、2つのコードに違いはありません。

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つしか含まれていないため、中括弧は必要ありません(ただし、混乱する場合は、物事を明確にするために使用することをお勧めします)。

于 2013-03-11T12:47:54.857 に答える
3

通常、適用する最適なルールは次のとおりです。

疑問がある場合は、{} を使用してください

同じことが言えます()

しかし、あなたの場合、どちらも同等です。

于 2013-03-11T12:49:14.047 に答える
1

これらは同じように実行されますが、if ステートメントの後に複数行のコードを追加する必要がある場合は、{} を追加する必要がない場合に {} をそのように使用することを好む人もいます。

于 2013-03-11T12:49:23.697 に答える
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;、 yourif(q[min_index].size() > q[i].size())が true の場合に行だけが呼び出されます。

于 2013-03-11T12:54:19.580 に答える
0

このように使用される括弧はブロックステートメントと呼ばれ、1 つ以上のステートメントをカプセル化するために使用されます。そのようなブロックの 1 つは 1 つのステートメントに等しく、ステートメントの本体として 1 つのステートメントを期待するパーサーを満たしifます。

いいえ、実際には2つの間に違いはありません。一方には単一のステートメントがあり、もう一方には別の種類の単一ステートメントがあり、たまたま他のステートメントが含まれています。

于 2013-03-11T12:50:07.147 に答える