cppreference中front与back措辞差异及相关术语区别的技术咨询
关于C++容器
front()和back()未定义行为措辞差异的疑问 cppreference上关于容器front()和back()的措辞存在出人意料的不对称:
front():对空容器调用front()是undefined。back():对空容器调用back()会导致undefined behavior。
我有两点疑问:
- 为何二者措辞存在差异?
- “is undefined”与“causes undefined behavior”之间有何区别?
解答
措辞差异的原因
这种表述不一致纯粹是cppreference社区编辑的风格问题。cppreference由社区志愿者维护,不同函数条目可能由不同贡献者编写,或是后续修订中没做到表述完全统一。从C++标准的角度看,空容器调用front()和back()的后果完全一致——都属于未定义行为。两种表述的区别
这两种表述没有本质区别,都指向C++标准定义的未定义行为(UB)。“is undefined”是简写,完整含义是“该调用行为是未定义的”,和“causes undefined behavior”表达的是同一回事:程序行为将脱离标准约束,可能崩溃、输出错误结果,或是出现其他不可预测的表现。
内容的提问来源于stack exchange,提问作者user58697
相关产品推荐
相关产品推荐

