首页 > 解决方案 > 快速复制数组到数组

问题描述

我尝试制作我的实时视频流应用程序。

现在,我尝试加快我的申请速度。

我有这样的问题:

如何在此处加速“for”循环:

        boost::array<uchar, 30000> RECV_DATA; // array for receive all data from socket

        size_t ImageSize = image_recver.read_some(
            boost::asio::buffer(RECV_DATA), ignored_error); // complete image size

        vector<uchar> Img (ImageSize); // the new array, will contains only image data

        for (int i = 0; i < ImageSize; i++) {
            Img[i] = RECV_DATA[i]; // Image array filling
        }

标签: c++arrays

解决方案


您可以使用std::vector范围构造函数来复制RECV_DATA

std::vector<uchar> Img(RECV_DATA.begin(), RECV_DATA.begin() + ImageSize);

或者,更好的是,直接读入std::vector<uchar>

std::vector<uchar> RECV_DATA(image_recver.available());
size_t imageSize = image_recver.read_some(boost::asio::buffer(RECV_DATA), ignored_error);
RECV_DATA.resize(imageSize);

推荐阅读