我有两个std::list
,每个m_Pos
都有一个位置向量。我是std::list
的新手,我会计算这两个列表中每个索引之间的距离并将它们存储在一个数组中。这就是我所做的,我不知道这是否正确
问题是距离不是有序方式的 dir 向量,例如,我想存储位置 Acurrent 和 Aprev、Bcurrent、Bprev 之间的距离,按顺序存储在 dir 向量中,以便我以后可以在它们之间关联,所以我说 dir[0] 是 Acurr 之间的距离, 唰。等
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++;
}
考虑使用标准算法,请注意,如果您有权访问 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
);
http://en.cppreference.com/w/cpp/algorithm/transform
http://en.cppreference.com/w/cpp/iterator/back_inserter