按大小拆分矢量

时间:2015-02-28 21:12:07

标签: c++

我有一个包含JPEG图像的缓冲区。

现在我想将此向量拆分为最大值的部分。 64000Bytes。

如果我的阵列大小为100000: 1.数组= 64000 2.数组= 36000

我该怎么做?

这是我的代码:但我不知道如何分割数组。

std::vector<uchar> buff;
for(int i = 0; i < buff.size(); i++)
{
        if(i % 64000 == 0 && i != 0)
        {
            std::cout << "Package Size" << i << std::endl;

        }
}

2 个答案:

答案 0 :(得分:0)

分割数组很容易,但如果您希望向量的每个部分都包含有效的.jpeg,我相信您会非常失望。

通过此披露,如果您的输入为buff,则可以执行此操作:

const auto size = 64000;
std::vector<std::vector<uchar>> foo(buff.size() / size, std::vector<uchar>(size));
foo.push_back(std::vector<uchar>(buff.size() % size);

for(auto i = 0; i < buff.size(); ++i)foo[i / size][i % size] = buff[i];

答案 1 :(得分:0)

一旦你知道std::vector constructor`可以从两个迭代器中获取范围,这很容易。

所以你可以这样做。

std::vector<uchar> buff;

...

std::vector<uchar> v1(buff.begin(), buff.begin() + 64000);
std::vector<uchar> v2(buff.begin() + 64000, buff.end());