c++ - 检查 std::vector 索引是否超出范围的最快方法是什么?

标签 c++ stdvector

我经常想确保我在函数体的顶部有一次在边界内。 我这样做的不同方法是:

// I don't like this much as it stops the program when I may not want to
assert( idx < v.size() );

if( !(idx < v.size()) )
{
    // take corrective action ...
}

if( v.size() <= idx )
{
    // take corrective action ..
}

在第二种和第三种方法(可能还有其他方法)之间,哪种方法效率更高?

最佳答案

就用

idx < vec.size()

并完成它。在这个问题上多花一分钟不会让您的应用程序任何更快。

另外,考虑检查访问:

try {
    vec.at(idx) = stuff;
} catch (std::out_of_range& err) {
    // oh dear god
}

关于c++ - 检查 std::vector 索引是否超出范围的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7395161/

相关文章:

c++ - 我可以将 ftw 函数用于 C++ 中的类方法吗?

c++ - 将 asio 缓冲区 boost 为数据

c++ - 动态数组 - 查找容量

c++ - 将唯一数据推送到 vector 中

algorithm - 用少量重复键对巨大的数组进行排序

c++ - 自定义对象的常量表达式

c++ - 在 STL 中使用引用计数的数据结构有哪些行为异常?

c++ - 2个c++程序如何在同一个linux机器上调用彼此的类/函数?

c++ - 在 C++ 静态方法中使用时,std::vector pushback 抛出 EXC_BAD_ACCESS

c++ - unique_ptr 的临时只读拷贝