Чтение данных в определенной позиции в std :: vector - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть std::vector<unsigned char> с двоичными данными.

Я просто хотел бы просто прочитать этот вектор, в определенной позиции с определенным размером.this:

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

Эта функция может считывать данные из 1200 в 1203.

Есть ли такая функция в C ++?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

Я предполагаю, что вам нужен еще один std :: vector с диапазоном out ...

Эта ссылка дает хороший ответ: Лучший способ извлечь подвектор из вектора?

ваша функция может выглядеть так:

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;
}
0 голосов
/ 01 апреля 2012

используйте соответствующие теги для ваших вопросов.

простой итератор через ваш вектор:

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

...