我有一个问题涉及确定两个向量是否包含两个相同的元素.元素可以是向量中的任何位置,但它们必须相邻.
已编辑更多示例
例如,比较时,以下两个向量将返回false.
向量1 = [0,1,2,3,4,6]
向量2 = [1,4,2,0,5,3]
但以下两个将返回true:
向量1 = [0,1,2,3,4,5]
向量2 = [4,2,1,5,0,3]
因为第一个向量中的1,2对应于第二个向量中的2,1.
真正:
向量1 = [0,1,2,3,4,5]
向量2 = [1,4,2,0,5,3]
{5,0}是一对,尽管在矢量周围循环(我原先说这是假的,感谢你发现'来自莫斯科的'弗拉德').
真正:
向量1 = [0,1,2,3,4,5]
向量2 = [4,8,6,2,1,5,0,3]
{2,1}仍然是一对,即使他们不在同一个位置
实际的应用是我有一个多边形(面),其中N个点存储在一个向量中.为了确定一组多边形是否完全包围3D体积,我测试每个面以确保每个边由另一个面共享(其中边由两个相邻点定义).
因此,Face包含指向Points的指针向量...
std::vector<Point*> points_;
Run Code Online (Sandbox Code Playgroud)
并检查Face是否被包围,Face包含一个成员函数...
bool isSurrounded(std::vector<Face*> * neighbours)
{
int count = 0;
for(auto&& i : *neighbours) // for each potential face
if (i != this) // that is not this face
for (int j = 0; j < nPoints(); j++) // and for each point …Run Code Online (Sandbox Code Playgroud)