我有两个std::list,每个都有一个位置矢量m_Pos.我是新手std::list,我想计算这两个列表中每个索引之间的距离,并将它们存储在一个数组中.这就是我所做的,我不知道这是不是正确的方法
问题是dir向量,其距离不是有序的,我想要例如存储位置Acurrent和Aprev,Bcurrent,Bprev之间的distane,以便在dir向量中按顺序存储,以便我可以稍后关联他们,所以我说dir [0]是Acurr,Aprev..etc之间的距离
if(objs.size() == m_prev_objs.size())
{
std::vector<Vec2f> dir;
std::list< Obj >::iterator prevIter = m_prev_objs.begin();
std::list< Obj >::iterator currIter = objs.begin();
// Vec2f dis = currIter->m_Pos - prevIter->m_Pos;
for (std::list< Obj >::iterator currIter = objs.begin(); currIter != objs.end(); ++currIter )
{
dir.push_back(currIter->m_Pos - prevIter->m_Pos);
}
prevIter++;
}
Run Code Online (Sandbox Code Playgroud)
考虑使用标准算法,请注意,如果您可以访问C++ 11,则操作可以是lambda
inline Vec2f action(const Objs& o1, const Objs& o2) {
return o1->m_Pos
- o2->m_Pos;
}
//elsewhere
std::vector<Vec2f> dir;
dir.reserve(objs.size());
std::transform(
objs.begin(),
objs.end(),
m_prev_objs.begin(),
std::back_inserter(dir),
action
);
Run Code Online (Sandbox Code Playgroud)
http://en.cppreference.com/w/cpp/algorithm/transform
http://en.cppreference.com/w/cpp/iterator/back_inserter