我看到了this question ,并注意到一条评论说:
Maybe you go out of bounds on one of the vectors?
我不是在询问使用 []
对超出范围的元素进行索引,这显然是超出范围的。据我所知,这不是 OP 所做的。 (我可能完全错了。)我还没有听说过使用 std::vector
越界的任何其他情况。
有人告诉我,在使用 .push_back(/*data*/)
时, vector 不会越界。由于评论者的声誉非常高,我几乎没有加倍评论来自知识的深度。该问题中的 OP 使用 .push_back()
,我再次认为它是一个防止越界的 std::vector
成员函数。
关于 std::vector
有什么我应该了解的重要知识,比我更精通 C++ 的人可以解释一下吗?
最佳答案
不,它们不受保护。 C++ 使它容易是正确的:
std::vector<int> v;
for (int i : v) // cannot go out of bounds
但总的来说,它不能总是预先证明你是对的:
std::vector<int> v = something();
int i = v[v[0]]; // How would the compiler know if it's legal?
无论 v
的内容如何,为了保证安全,你可以这样写
int i = v.at(v.at(0)); // might throw at runtime
但由于额外的运行时检查,速度较慢。
关于c++ - vector 是否不 protected ,不会越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37852934/