如果验证容器的大小并在同一条件语句下访问元素,这是很好的做法吗?
Is it good practice if container's size is validated and accessing an element under same conditional statement?
以下哪一个代码在它们两个之间更可取,为什么?
1.
std::stack<int>stk;
//Do something
if( stk.empty() == true || stk.top() < 10 )
{
//Do something.
}
或
阿拉伯数字
std::stack<int>stk;
//Do something
if( stk.empty() == true )
{
//Do something.
}
else if( stk.top() < 10 )
{
//Do something.
}
内置运算符&&
和||
执行短路计算(如果在计算第一个操作数后知道结果,则不要计算第二个操作数(。因此,表达stk.empty() || stk.top() < 10
是安全和良好的做法,stk.top()
仅在stk.empty()
评估结果为false
时才调用。换句话说,运营商旨在实现这种使用。
这完全取决于用例。在第一个代码中,您有一个OR条件用于空堆栈并检查元素的值(如果元素存在(。因此,很明显,您可以继续执行代码。
在第二个代码中,您希望对这两个条件执行不同的操作。因此,您已将条件置于 if else 循环中。
当您不希望代码中断或通过角落测试用例时,良好的做法就会变得有意义。当堆栈为空时,您可能不会在代码中缺少某些内容。
std::stack<int>stk;
if(stk.top() < 10 )
{
//Do something.
}
else if(stk.empty() == true)
{
//Do something
}
这将生成运行时错误,因为堆栈为空,但您在检查堆栈空条件之前正在访问顶部元素。 错误快照
我希望答案能说清楚。
相关文章:
- 使用不带参数的函数访问结构元素
- 我想访问std::unique_ptr中的一个特定元素
- 访问类lintalizer列表中的结构元素
- 从C++中的对列表中访问特定元素
- 访问动态分配列表中的元素
- 如何从静态向量访问类元素?
- 以C++访问矢量中的地图元素
- 映射基于自动的循环单元素访问C++
- 用元组作为C 的元素访问元组
- 元素访问(获取和放置)在C++中使用 std::vector
- 在Haskell中使用O(1)元素访问实现高效的类似拉链的数据结构
- std::map - 无异常且无需插入的元素访问
- C++2D矢量声明和来自调试器的元素访问
- 迭代器性能的重点应该放在高级还是元素访问上
- groot集合-元素访问
- 矩阵元素访问
- 对于boost::hana::tuple,元素访问的时间复杂度是多少?
- c++向量元素访问
- 通用容器和可变元素访问
- std::vector中的每个元素访问都是缓存未命中吗