Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 按大小拆分向量_C++ - Fatal编程技术网

C++ 按大小拆分向量

C++ 按大小拆分向量,c++,C++,我有一个缓冲区,它包含一个JPEG图像 现在我想把这个向量分成最大64000字节的部分 如果阵列大小为100000: 1.阵列=64000 2.阵列=36000 我该怎么做 这是我的代码:但我不知道如何分割数组 std::vector<uchar> buff; for(int i = 0; i < buff.size(); i++) { if(i % 64000 == 0 && i != 0) { std:

我有一个缓冲区,它包含一个JPEG图像

现在我想把这个向量分成最大64000字节的部分

如果阵列大小为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;

        }
}

拆分数组很容易,但如果您希望向量的每个部分都包含有效的.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];

一旦您知道可以从两个迭代器获取范围,这就非常容易了

所以你可以这样做

std::vector<uchar> buff;

...

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

我怀疑迟早会涉及到代码。到目前为止你尝试了什么?结果是什么?到目前为止你尝试了什么?它是如何工作的?它怎么不起作用?您是否查看过例如,以查看是否可以接受范围提示:是的,它可以?哦,对不起,我已经添加了它