Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何捕捉范围错误的范围异常(向量偏离一个错误)_C++ - Fatal编程技术网

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
}