c++ - C++ vector 上下限检查

原文 标签 c++ vector std stdvector indexoutofboundsexception

我使用[]访问数学代码中的向量。我不想使用at(),因为我不喜欢例外。当我不确定我的索引时,我很高兴明确检查代码中的界限。因此,我的代码充满了这种语句:if(n >= 0 && n < vec.size())

我的问题是,我没有在std::vector中找到像vec.isok(n)这样的调用,该调用直接说明索引是是还是否。

我忽略了吗?就我而言,这将使代码更整洁。

顺便说一句,我认为显式检查也比at()调用更有效,因为通常我使用的是嵌套向量结构,并且当我一次检查索引n时,然后在n括号内多次使用if,有时是数千次。因此,我的问题是,在if中没有两个测试的情况下,您是否看到了一种更整洁的方法?谢谢!

最佳答案

是的,std::vector不像std::vector::isOK(x)这样的东西。您可以在std::vector中变形SafeVector并发布要使用的安全接口。

相关文章:

c++ - 错误:无法将“const value_type”转换为“char”

c++ - C++动态数据–如何获取数据以及如何摆脱数据

java - Java中的* this = rhs?

c++ - 两者均在0-255范围内将RGB转换为HSV和将HSV转换为RGB的算法

c++ - 交换结构 vector 的内容c++

c++ - 由于私有(private)继承,无法访问迭代器

c++ - 将0打印到文件是否安全?

c++ - 在模块之间传递对象的替代方法

c++ - vector 名称如何被视为数组名称?

c++ - 使用平截头体时的OpenGL远剪切