簡體   English   中英

按大小拆分矢量

[英]Split vector by size

我有一個緩沖區,其中包含一個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;

        }
}

分割數組很容易,但是如果你希望向量的每個部分都包含一個有效的.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構造函數std::vector可以從兩個迭代器獲取范圍,這很容易。

所以你可以這樣做

std::vector<uchar> buff;

...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM