小编Jam*_*mes的帖子

确定两个向量是否包含相同的两个相邻项

我有一个问题涉及确定两个向量是否包含两个相同的元素.元素可以是向量中的任何位置,但它们必须相邻.

已编辑更多示例

例如,比较时,以下两个向量将返回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)

c++ algorithm stl vector c++11

6
推荐指数
1
解决办法
1535
查看次数

标签 统计

algorithm ×1

c++ ×1

c++11 ×1

stl ×1

vector ×1