C++ vector 下限和上限检查

标签 c++ vector std stdvector indexoutofboundsexception

我使用 []用于访问数学代码中的 vector 。我不想使用 at()因为我不喜欢异常(exception)。当我不确定我的索引时,我很高兴在代码中明确检查边界。所以,我的代码充满了这种语句:if(n >= 0 && n < vec.size()) .

我的问题是,我没有在 std::vector 中找到像vec.isok(n)这样的电话如果索引在边界内,则直接说明 yesno

我是不是忽略了它?在我的例子中,它会使代码更整洁。

顺便说一句,我认为显式检查也比 at() 更有效。调用是因为通常我使用嵌套 vector 结构并且当我检查索引时 n一次,然后我使用 nif里面多次支架,有时数千次。所以,我的问题是,您是否看到在 if 中没有两个测试的更简洁的方法? .谢谢!

最佳答案

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

关于C++ vector 下限和上限检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381587/

相关文章:

c++ - 使用 GetQueuedCompletionStatusEx 将多个完成从队列中取出

c++ - 传递多维数组时的链接错误

c++ - 在一个范围内推送五个对象指针,然后检查对象的 bool 是否为 false,会出错

c++ - 为什么 vector<Data*>::iterator 有效而 vector<Data*>*::iterator 无效?

c++ - make_heap() 函数如何工作?

c++ - 使用 std::find() 搜索多个元素

c++ - 模板成员函数参数推导

c++ - 通过HTML访问程序资源时如何获取可执行文件名?

c++ - 调用函数时实际发生的情况

c++ - 我可以将智能指针推送到智能指针列表吗?