我使用 []
用于访问数学代码中的 vector 。我不想使用 at()
因为我不喜欢异常(exception)。当我不确定我的索引时,我很高兴在代码中明确检查边界。所以,我的代码充满了这种语句:if(n >= 0 && n < vec.size())
.
我的问题是,我没有在 std::vector
中找到像vec.isok(n)
这样的电话如果索引在边界内,则直接说明 yes 或 no。
我是不是忽略了它?在我的例子中,它会使代码更整洁。
顺便说一句,我认为显式检查也比 at()
更有效。调用是因为通常我使用嵌套 vector 结构并且当我检查索引时 n
一次,然后我使用 n
在if
里面多次支架,有时数千次。所以,我的问题是,您是否看到在 if
中没有两个测试的更简洁的方法? .谢谢!
最佳答案
是的,std::vector
没有像std::vector::isOK(x)
这样的东西。您可以在 SafeVector
中扭曲 std::vector
并发布要使用的安全接口(interface)。
关于C++ vector 下限和上限检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381587/