Я спокойно говорю на C++ и программирую вообще, я пишу приложение OpenCv в среде C++.Итератор и реверс Iterator
Я пытаюсь ДОСТИЖЕНИЕ:
ОК, так что я получил некоторые моменты Прямоугольников центра находятся в векторе, сейчас я использую обратный итератор для перебора вектора с прямоугольными центральными точками и хранить каждый 10-й центра укажите новый вектор.
Я снова повторяю этот новый вектор, который хранит каждую 10-ю центральную точку прямоугольника с нормальным итератором. И я хочу вычесть 1-й элемент из 2-го элемента 3-го элемента из 4-го элемента и так далее, результаты вычитания, я хочу сохранить в другой новый вектор: D
Это может быть немного запутанным для некоторых людей; Я смущен, сам, поэтому ниже я добавлю код, который я написал.
vector<Point> Rightarm;
vector<Point> Leftarm;
vector<Point>::reverse_iterator RightMovmentIter;
vector<Point>::reverse_iterator LeftarmMovmentIter;
vector<Point> RightTracking;
vector<Point> LeftTracking;
for(RightMovmentIter = Rightarm.rbegin(); RightMovmentIter != Rightarm.rend(); RightMovmentIter+=10)
{
RightTracking.push_back(*RightMovmentIter);
}
for(LeftarmMovmentIter = Leftarm.rbegin(); LeftarmMovmentIter != Leftarm.rend(); LeftarmMovmentIter+=10)
{
LeftTracking.push_back(*LeftarmMovmentIter);
}
vector<Point>::iterator RresultIter;
vector<Point>::iterator Leftresult_Iter;
vector<Point> summery;
for(RresultIter = RightTracking.begin(); RresultIter != RightTracking.end(); RresultIter++)
{
summery = *RresultIter - *RresultIter++;
}
ПРОБЛЕМА:
первая проблема в том, что при запуске программы я получаю во время выполнения ошибки I убеждения, что это потому, что в начале вектора Rightarm & Leftarm не имеют 10 элементов и при запуске итератора через него и пытается искать 10-й элемент, я не могу ... Как я могу это сделать?
Вторая проблема связана с этой строкой summery = * RresultIter - * RresultIter ++; Я знаю, что это неправильно, и это лучшая попытка, о которой я мог подумать, но я хочу, чтобы вычесть 1-й элемент из второго элемента и сохранить его в элементе summery ...
Надеюсь, это очень хорошо описывает мою проблему для читателей С уважением
Уверены, что вы не получили ошибку времени компиляции? 'summery = * RresultIter - * RresultIter ++' (это «summary» btw): вычитание не имеет смысла для массивов, и эта линия также супер-запутана; по крайней мере, положить скобки вокруг условий. Также вы не можете сделать + = 10 на итераторе; он может пропустить последний конец массива и перейти в неопределенную память. – Dave
Да, жаль, что я получаю ошибку компилятора из-за этой строки, когда я удаляю эту строку. Я получаю ошибку времени выполнения. Самый лучший из них - из-за Итератора + = 10 .......... У вас есть идея, как я могу положить все это на работу ...? привет – Tomazi
Самый простой способ - использовать собственную переменную цикла, например 'for (int i = 0; i
Dave