繁体   English   中英

读取std :: vector中特定位置的数据<unsigned char>

[英]Read data in a specific position in a std::vector<unsigned char>

我有一个带有二进制数据的std::vector<unsigned char>

我只是想在具有特定大小的特定位置读取此向量。

我会这样的功能:

myvector.read(PositionBegin, Size)
myvector.read(1200,3)

该功能可以从12001203读取数据。

在C ++中有这样的函数吗?

我假设你想要另一个带有范围的std :: vector ...

这个链接提供了一个很好的答案: 从向量中提取子向量的最佳方法?

你的功能可能如下:

std::vector<unsigned char> readFromVector(const std::vector<unsigned char> &myVec,
        unsigned start, unsigned len)
{
    // Replaced T with unsigned char (you could/should templatize...)
    std::vector<unsigned char>::const_iterator first = myVec.begin() + start;
    std::vector<unsigned char>::const_iterator last = first + len;
    std::vector<unsigned char> newVec(first, last);
    return newVec;
}

为您的问题使用适当的标签。

一个简单的迭代器会引发你的向量:

for (i=0; i<myvector.size(); i++)
cout << " " << myvector.at(i);
cout << endl;

所以如果你想使用一个范围,你只需要设置你的for循环约束

for (i=PositionBegin; i<PositionBegin+Size; i++)
cout << " " << myvector.at(i);
cout << endl;

如果您希望此函数将此函数输出到另一个向量,而不是使用cout,则必须将其推送到新向量中。

mynewvector.push_back(myvector.at(i));

不要忘记,当你使用这个功能时,你必须使用以下类型:

vector<type> function()

最后:

return mynewvector;

阅读载体: cplusplus

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM