快速复制阵列到阵列

时间:2019-03-11 16:02:53

标签: c++ arrays

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

现在,我正在尝试加快我的应用程序的速度。

我有这样的问题:

如何在此处加快“ 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
        }

1 个答案:

答案 0 :(得分:1)

您可以使用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);