2017-06-16 141 views
-3

在do-while循環中我正在使用for循環讀取矢量的值。這個向量有重複的值。我想停止使用if語句的for循環。 如何用if語句在C++中的do-while循環中終止for循環?

do { 
 
    /* some statement1*/ 
 
    for(int i = 0; i < n; ++i) 
 
     { 
 
     if (vec[i] == a) 
 
      { 
 
      /* some statement2*/ 
 
      } 
 
     } //here i want to terminate the for loop once it finds value a in vector 
 
    } while (statement3);
我用過break;但它也終止了時間條件。

+0

你可以使用lambda,並立即調用它,然後用'return'作爲'break'。 –

+2

看起來你錯過了一些作品。請提供[最小,**完整**和可驗證示例](https://stackoverflow.com/help/mcve)。 – InternetAussie

+2

我認爲你誤解了break關鍵字的作用 - break只會讓你脫離最直接內部的最內層循環;它不會讓你擺脫多層循環。 –

回答

2

您的代碼有多個語法錯誤,即缺少內部循環的大括號/ if條件。只有一個右大括號。下面是正確版本的代碼與break它應該是:

do 
{ 
    /* some statement 1 */ 
    for(int i = 0; i < n; ++i) 
    { 
     if (vec[i] == a) 
     { 
      /* some statement 2 */ 
      break; 
     } 
    } 

} while (condition); 

而且,它應該工作。它會break內部for循環而不是外部do-while

1

使用break像這樣:

do { 
    /* some statement1*/ 
    for (int i = 0; i < n; ++i) { 
    if (vec[i] == a) { 
     break; 
    } 
    } 
} while (statement3);