我们知道,C++中容器[]没有at()访问容器更安全,前者溢出五任何提醒,后者会报错,原因在于,后者在return时,添加了一个断言,也就是检查,参见以下代码:
// at() with range check
reference at(size_type i)
{
return rangecheck(i), elems[i];
}
/*BOOST_CONSTEXPR*/
const_reference at(size_type i) const {
return rangecheck(i), elems[i];
}
若,断言为真,程序中断,抛出异常,否者会正常执行,返回逗号表达式的后半部分。
本文探讨了C++中容器at()与[]的使用差异,详细解析了at()如何通过内置断言提供更安全的数据访问方式,避免数组越界错误,从而提升程序的健壮性和安全性。
2万+

被折叠的 条评论
为什么被折叠?



