两个std :: List之间的距离

Moa*_*een 1 c++ algorithm

我有两个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)

111*_*111 5

考虑使用标准算法,请注意,如果您可以访问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