我正在定义一个大小为9的数组.但是当我访问数组索引10时,它没有给出任何错误.
int main() {
bool* isSeedPos = new bool[9];
isSeedPos[10] = true;
}
Run Code Online (Sandbox Code Playgroud)
我期望得到编译器错误,因为isSeedPos[10]我的数组中没有数组元素.
为什么我没有收到错误?
这不是一个问题.
C++数组中没有绑定检查.您可以访问超出数组限制的元素(但这通常会导致错误).
如果你想使用一个数组,你必须自己检查你是不是没有界限(你可以将sizee保存在一个单独的变量中,就像你做的那样).
当然,更好的解决方案是使用标准库容器,如std::vector.随std::vector你也可以
myVector.at(i)方法获取第i个元素(如果超出范围将抛出异常)myVector[i]与C风格数组相同的语法,但您必须自己进行边界检查(例如if (i < myVector.size()) ...在访问之前尝试)另请注意,在您的情况下,std::vector<bool>是一个专门的版本实现,以便每个bool只占用一位内存(因此它使用的内存少于数组bool,可能是你想要的,也可能不是你想要的).
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |