2010-02-01 141 views
11

任何人都可以告诉我什么是C++循环中的哨兵?请给我一个例子,在while循环中使用sentinel。C + +的哨兵while循环

+3

哨兵已经出现在'int main(int argc,char ** argv)'中:传递给你程序的最后一个参数后面跟着一个空指针。所以严格来说你不需要'argc':只要循环'argv'直到你得到一个空指针。 – 2010-02-01 13:07:26

回答

23

A “前哨” 是用来表示一个序列的末端的特殊值。字符串末尾最常见的哨兵是\ 0。 “哨兵同时循环”通常具有以下形式:

while (Get(input) != Sentinel) { 
    Process(input); 
} 
+0

是一个“哨兵while循环”只是一个“while循环”的长名称呢?还是更具体? – 2017-09-29 16:31:40

+0

@LupusOssorum:更具体。这是一个“而哨兵还没有看到” - 回环。 – MSalters 2017-10-02 06:43:46

0

它通常是一个布尔型(true或false)变量,当条件不满足时设置为false,当它设置为true时设置为true。然后,只要前哨点是假的,我们就可以循环。

实施例:在该上下文中

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

这是不正确的。这只是一种终止条件,或者是一种“警卫”。正如其他人所说的,在一次迭代中,定点标志是一个特殊的值,表示结束循环。 – 2010-02-01 13:54:07

1

作为附录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. 
+0

是的,但字典没有提供一个例子。其他人也可能需要一个例子来更好地理解。 – olibre 2016-07-26 21:40:42

0

一个sentinal是项目列表中的一个特殊值,它总是会导致迭代器停止。

例如,ASCIIZ字符串中的零终止符充当sentinal。

链接列表通常有NULL指针等等。