基于相邻元素 c++ 的分段误差范围的循环
Segmentation error range-based for loop over neighbouring elements c++
>我正在尝试循环一个向量,需要操作当前元素以及下一个元素。我目前正在尝试这个,但出现一个 seg 错误:
for (const auto& element : * vec)
{
const ClassObj * obj1 = &element;
const ClassObj * obj2 = &element + 1;
if(!obj2) break;
}
为什么这不起作用,你有更好的解决方案吗?
在这里可以使用基于范围的 for 循环,但它有点丑陋:
for (const auto& element : vec)
{
const auto* obj1 = &element;
if (obj1 == &vec.back()) break;
const auto* obj2 = &element + 1;
... // do whatever with *obj1 and *obj2
}
大多数人可能更喜欢基于索引的标准 for 循环:
for (size_t i = 1; i < vec.size(); i++)
{
... // do whatever with vec[i - 1] and vec[i]
}
注意我故意没有写
for (size_t i = 0; i < vec.size() - 1; i++) // don't do this
因为这会导致空向量的负溢出(届时可能会发生非常糟糕的事情(。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 尝试通过多个向量访问变量时,向量下标超出范围
- 错误:未在此范围内声明'reverse'
- 正在将指针转换为范围
- 使用std::transform将一个范围的元素添加到另一个范围中
- 为什么在浮点中从大到小会引入更多的误差
- 在基于范围的for循环中使用结构化绑定声明
- 如何计算数据类型的范围,例如int
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 在C++中查找范围的长度
- 如何设置一个范围来提取我想要获得的信息
- 并行用于C++17中数组索引范围内的循环
- 为左值和右值的包装器实现C++范围
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 基于相邻元素 c++ 的分段误差范围的循环
- QImage::p ixel 和 QImage::setPixel 坐标超出范围误差
- 向量下标出的范围错误.即使向量的索引大于访问数据的索引,也会发生误差
- 删除"超出矢量误差范围"的打印语句后输出不同的根本原因
- 定义范围,尽管C++舍入误差
- 表与误差范围匹配