C++中的矢量下标超出范围



将矢量数组加载到矢量RGB数组时遇到问题。

之后rgbv = pointcloud_RGB[i];我得到一个错误"矢量下标超出范围"。有人能指引我吗。

问候

Suhas

const std::vector<cv::Vec3b>& pointcloud_RGB;
for (unsigned int i=0; i<points.size(); i++) {
    cv::Vec3b rgbv(255,255,255);
    if (pointcloud_RGB.size() >= i) {
        rgbv = pointcloud_RGB[i];
    }
}

您有一个off-by-one错误。

如果pointcloud_RGB.size() == i,则i是经过矢量末尾的一个元素。

要解决此问题,只需更改您的条件即可:

if (pointcloud_RGB.size() >= i) {

对此:

if (pointcloud_RGB.size() > i) {
for (unsigned int i=0; i<points.size(); i++) {
    cv::Vec3b rgbv(255,255,255);
    if (i<pointcloud_RGB.size() ) {
        rgbv = pointcloud_RGB[i];
    }
}

这将修复超出限制的错误

相关内容

  • 没有找到相关文章

最新更新