首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代器和反向迭代器

迭代器和反向迭代器
EN

Stack Overflow用户
提问于 2013-03-29 09:05:32
回答 1查看 371关注 0票数 0

我对C++和编程很熟悉,我正在C++环境中编写一个OpenCv应用程序。

我想要实现的是:

好的,我把一些矩形的中心点存储在一个向量中,现在我使用一个反向迭代器来迭代带有矩形中心点的向量,并将每10个中心点存储到新的向量中。

然后,我再次使用常规迭代器迭代存储每10个矩形中心点的新向量,我想从第二个元素减去第一个元素,从第四个元素减去第三个元素,依此类推,减去的结果,我想存储到另一个新的向量中:D

这可能会让一些人感到有点困惑;我自己也很困惑,这就是为什么我会在下面添加我写的代码。

代码语言:javascript
复制
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++;
}

问题:

第一个问题是,当我运行程序时,我得到了运行时错误,我相信这是因为在向量的一开始,Rightarm & Leftarm没有10个元素,当迭代器遍历它,试图寻找第10个元素I,cant....HOW,我能解决这个问题吗?

第二个问题是关于summery = *RresultIter -*RresultIter++这一行;我知道这是错误的,这是我能想到的最好的尝试,但我想做的是从第二个元素中减去第一个元素,并将其存储在summery元素中……

希望这篇文章能很好地描述我的问题,以引起读者的关注

EN

回答 1

Stack Overflow用户

发布于 2013-03-29 12:01:36

正如您已经正确注意到的,除非Rightarm.size()是10的精确倍数,否则这是不起作用的。解决这个问题的一种方法是跳过开头的元素,使末尾对齐。

代码语言:javascript
复制
for(RightMovmentIter = Rightarm.rbegin() + Rightarm.size() % 10;
    RightMovmentIter != Rightarm.rend();
    RightMovmentIter+=10)

至于计算运行差异,有一个标准的算法,std::adjacent_difference

代码语言:javascript
复制
std::adjacent_difference( RightTracking.begin(), RightTracking.end(),
      std::back_inserter( summery ) );
summery.erase( summery.begin() );

这会复制第一个值而不取差(类似于假设“在第一个值之前”的值为零),因此erase()代码行删除了这个值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15695789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档