我可以依靠短路评估来检查C++中的向量边界吗?

mim*_*pus 10 c++ stl

以下代码是否可以接受?

if(vector.size() > 0 && vector[0] == 3) {
}
Run Code Online (Sandbox Code Playgroud)

或者当向量为空时它是否会崩溃?我没有注意到这种情况,但我担心它仍然可能.

Pet*_*ker 14

是的,您可以依靠内置运算符&&进行短路.这是其规范的一部分.


Ker*_* SB 11

是的,这是有效的,但是说它会更加惯用!vector.empty() && vector[0] == 3:这将适用于所有具有最高效率的容器,因此它永远不会更糟,有时更好,而且总是更具可读性.