我从空std容器的front()得到什么?

如果front()返回一个引用,并且容器是空的,我会得到一个未定义的引用? 这是否意味着我需要在每个front()之前检查empty() front()

你得到未定义的行为 – 你需要在调用front()之前检查容器是否包含使用empty()的东西(它检查容器是否为空)。

你得到未定义的行为。

在(0)处使用范围检查。 如果这失败,你会得到一个out_of_rangeexception。

是的,你可以像格雷厄姆一样使用'at'而不是使用front。

但是,(0)只能用于一些容器 – vector,而不是其他的 – 列表,队列,堆栈。 在这些情况下,你必须重新考虑“空”检查的安全性。

未定义的行为

在调用这个实例的front()之前,你一定要确定你的容器不是空的。 调用empty()作为安全警卫是很好的。

当然,根据你的程序devise,总是有一个非空的容器可以是一个不变的语句,允许你在每次调用front()时防止和保存调用为empty()。 (或至less在你的代码的一部分?)

但是如上所述,如果您想要避免程序中的未定义行为,请使其成为一个强大的不variables。