Вектор итераторов из разных контейнеров ошибки
Здравствуйте, я пытаюсь объединить векторы, когда получаю данные от кабеля в моем цикле while. Я ищу ...
copyметод в массиве C++ много, и я видел примеры, такие как мой код, который должен работать правильно, однако я получаю ошибку, как в названии. Я поставил точки останова и наблюдал;
copy(GetIntArrayFromCharArray(vec).begin(), GetIntArrayFromCharArray(vec).end(), it+intData.size());в этой строке он звонит в первый раз
GetIntArrayFromCharArrayвсе было в порядке, значит, он зовет ее к себе.
.end()затем появляется ошибка. Я тоже смотрел итератор, он не пустой. Я не мог понять, что мне делать.
(PrevFrameFragmentNo и другие переменные предназначены только для отслеживания кадра и сегментов в пакетных данных UDP.)
Что я уже пробовал:
ЭТОТ ФРАГМЕНТ КОДА НАХОДИТСЯ В ЦИКЛЕ WHILE, ПРИНИМАЕТ ДАННЫЕ В БУФЕР
//char buf ----> vecor<char> vec int n = sizeof(buf) / sizeof(*buf);//number of elements vector<char> vec(buf, buf + n); if (FrameFragmentNo == 1)// First fragment { intData = GetIntArrayFromCharArray(vec); PrevFrameFragmentNo = FrameFragmentNo; } else if (FrameFragmentNo <= TotalFragmentCount) // Other Fragments { vector<uint16_t> concatAry; std::vector<uint16_t>::iterator it; concatAry.assign(intData.begin(), intData.end()); it = concatAry.begin(); //PROBLEMATIC LINE IS HERE copy(GetIntArrayFromCharArray(vec).begin(), GetIntArrayFromCharArray(vec).end(), it+intData.size()); intData = concatAry; PrevFrameFragmentNo = FrameFragmentNo; count++; }
Этот код является методом GetIntArrayFromCharArray()
vector<uint16_t> GetIntArrayFromCharArray(vector<char> arr) { if ((arr.size() % 2) == 1) arr.resize(arr.size()+1); vector<uint16_t> intArray; for (int i = 0; i < arr.size(); i += 2) intArray.push_back((uint16_t)((arr[i] << 8) | arr[i + 1])); return intArray; }