向量下标超出C ++范围

时间:2015-06-26 09:09:18

标签: c++ arrays opencv vector

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

rgbv = pointcloud_RGB[i];我收到错误“矢量下标超出范围”。有人可以指导我。

此致

苏哈斯

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];
    }
}

2 个答案:

答案 0 :(得分:2)

你有一个错误。

如果pointcloud_RGB.size() == i,那么i是向量末尾之后的一个元素。

要解决此问题,只需改变您的条件:

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

对此:

if (pointcloud_RGB.size() > i) {

答案 1 :(得分:0)

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

This will fix, out of bound error