web-dev-qa-db-ja.com

C ++のSentinelwhileループ

C++でのセンチネルwhileループとは誰か教えてもらえますか?歩哨のwhileループを使用した例を教えてください。

14
yihangho

このコンテキストでの「センチネル」は、シーケンスの終了を示すために使用される特別な値です。最も一般的な番兵は、文字列の最後の\ 0です。 「センチネルwhileループ」は通常、次の形式になります。

while (Get(input) != Sentinel) {
  Process(input);
}
23
MSalters

番兵は特別な値です。ブール値、非常に大きいまたは小さい。ループをいつ停止するかを決定するために使用されます。

良い例は、マージソートの実装です。 http://www.cs.princeton.edu/courses/archive/spr07/cos226/lectures/04MergeQuick.pdf の4ページをお読みください。

2
Yin Zhu

JRLの回答の補足として..

この質問をしても問題はありませんでしたが、将来的には、dictionary.comにアクセスして、わからない単語を検索することで、より迅速なヘルプが見つかる可能性があることに注意してください。

編集:この場合、辞書はあなたが考えることを何も残しません。これが定義3です:)

3 Also called  tag.  Computers. a symbol, mark, or other labeling device indicating the beginning or end of a unit of information.
1
San Jacinto

これは通常、条件が満たされない場合はfalseに設定され、満たされた場合はtrueに設定されるブール(trueまたはfalse)変数です。次に、番兵が偽である限りループできます。

例:

bool acceptedAnswer = false;
while (acceptedAnswer == false)
{
  refreshPage();
  if (hasBeenAccepted())
  {
     acceptedAnswer = true;
  }
}
0
JRL

センチナルは、アイテムのリスト内の特別な値であり、常にイテレータを停止させます。

たとえば、ASCIIZ文字列のゼロターミネータはセンチナルとして機能します。

リンクリストには、多くの場合、NULLポインタなどがあります。

0
Will