c++ - C++ 中 vector 下标超出范围

标签 c++ arrays opencv vector

我在将 vector 数组加载到 vector RGB 数组时遇到问题。

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

问候

苏哈斯

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

最佳答案

你有一个差一错误。

如果 pointcloud_RGB.size() == i,则 i 是 vector 末尾后的一个元素。

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

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

对此:

if (pointcloud_RGB.size() > i) {

关于c++ - C++ 中 vector 下标超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31069197/

相关文章:

c++ - OpenCV 中的 Hessian 仿射检测器

c++ - 检查两种类型是否可以别名

C++:覆盖新创建的数组中的元素

javascript - React Component 的状态用 .unshift() 渲染很奇怪,但是用 .push() 渲染正常

c++ - PCA 输出特征向量和特征值

c++ - 如何加载以前存储的 svm 分类器?

c++ - 等待 ShellExecuteEx(在 Windows 进程上设置访问权限)

c++ - Inheriting (or member) traits 成语

将字符数组的子字符串与C中的另一个字符数组进行比较

python - 图像的轮廓轴