【发布时间】:2012-06-06 09:01:55
【问题描述】:
我不能执行以下操作,编译器说 std::vector 中没有匹配的运算符,我认为我不能重载它。那么我有什么选择,除了只使用 1 向量来存储碰撞结果。我正在尝试对缓存非常友好,并且我不希望在将其设置为 true 后将相同的 bool 重置为 false,因此使用 or。
void CollisionDetection(const vector<Vector2D>& position1,
const vector<Vector2D>& position2,
dimension dim1, dimension dim2,
vector<bool>& result1, vector<bool>& result2)
{
assert(position1.size()==result1.size());
assert(position2.size()==result2.size());
for(int i=0;i<position1.size();i++)
{
for(int j=0;j<position2.size();j++)
{
result1[i] |= result2[i] |=
rectOverlap(position1[1], position2[i], dim1, dim2);
}
}
}
【问题讨论】:
-
rectOverlap()的返回类型是什么? -
你能发布
rectOverlap()的定义吗?还有Vector2D和dimension的定义?我看不到代码的发布部分有任何问题 -
想象一下它的 result1[i] |= result2[i] |= true;同样的错误。
标签: c++ bit-manipulation