以下是实现你所描述的C++代码:

#include <iostream>
#include <vector>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>

int main() {
    // 创建一个 std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> 对象
    std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> clouds;

    // 添加一些数据到 clouds 中
    for (int i = 0; i < 5; i++) {
        pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
        cloud->width = 100;
        cloud->height = 1;
        cloud->points.resize(cloud->width * cloud->height);
        clouds.push_back(cloud);
    }

    // 创建一个与 clouds 中指针个数相等的新指针数组
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr* newPointers = new pcl::PointCloud<pcl::PointXYZRGB>::Ptr[clouds.size()];

    // 将 clouds 中的数据赋值给新指针数组
    for (size_t i = 0; i < clouds.size(); i++) {
        newPointers[i] = clouds[i];
    }

    // 打印新指针数组中的数据
    for (size_t i = 0; i < clouds.size(); i++) {
        std::cout << "Cloud " << i << " size: " << newPointers[i]->size() << std::endl;
    }

    // 删除新指针数组
    delete[] newPointers;

    return 0;
}

上述代码首先创建一个 std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> 对象 clouds,然后使用循环将一些数据添加到 clouds 中。

接下来,代码创建了一个指针数组 newPointers,其大小与 clouds 中的指针个数相等。然后,通过循环将 clouds 中的指针赋值给 newPointers

最后,代码打印了 newPointers 中每个指针所指向的点云数据的大小,并删除了 newPointers

创建stdvectorpclPointCloudpclPointXYZRGBPtr clouds内的指针个数的新指针并将clouds内的数据赋值给新创的各个指针的c++代码

原文地址: https://www.cveoy.top/t/topic/h9A4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录