C++ 如何捕捉范围错误的范围异常(向量偏离一个错误)
我正在尝试在向量偏离一个错误后获取自定义错误消息 我正在使用代码块C++ 如何捕捉范围错误的范围异常(向量偏离一个错误),c++,C++,我正在尝试在向量偏离一个错误后获取自定义错误消息 我正在使用代码块 for (int x; cin>>x; ) v.push_back(x); for (int i = 0; i<=v.size(); ++i) //to print values cout << "v[" << i <<"] == " << v[i] << '\n'; return 0; 我希望在错误I之后,您需要使用atfunc
for (int x; cin>>x; )
v.push_back(x);
for (int i = 0; i<=v.size(); ++i) //to print values
cout << "v[" << i <<"] == " << v[i] << '\n';
return 0;
我希望在错误I之后,您需要使用atfunction访问元素。 从: 返回对指定位置处元素的引用,并进行边界检查 如果pos不在容器的范围内,则抛出std::out_of_range类型的异常 因此,您所需要做的就是将完成的元素访问替换为[],替换为: 您还可以访问向量中元素的常量/可变引用:
// Accessing constant reference to every element in the vector
for(const auto& const_element_ref: vec) {
// Do stuff
}
// Accessing mutable reference to every element in the vector, potentially modifying it
for(auto& element_ref: vec) {
// Do stuff
}
对循环使用范围传递,您不能有一个off-by-one错误。如果你要迭代整个范围,就没有理由再使用计数器循环。请问,我该怎么做?我是一个beginer。你的循环可以替换为int I=0;福雷托e:v{太棒了!谢谢。这只是标题,但问题是如何捕捉异常……我不会在forauto-it:v中使用它作为名称,因为它对迭代器来说太常见了,但这里是元素的副本。特别是当你提到迭代器时。场景后面涉及迭代器,但它是none@formerlyknownas_463035818好波我编辑这篇文章就是为了反映这一点。
// Copy each element of the vector into element
for(auto element: vec) {
// Do stuff
}
// Accessing constant reference to every element in the vector
for(const auto& const_element_ref: vec) {
// Do stuff
}
// Accessing mutable reference to every element in the vector, potentially modifying it
for(auto& element_ref: vec) {
// Do stuff
}