我想检查HashSet是否包含特定元素。我已经有了该int元素的哈希码,但是没有对该元素本身的引用。
是否可以在不迭代整个集合的情况下执行此操作?
假设我有两个多边形,一个位于另一个之上,如下所示:

我想将它们的顶点连接起来,以围绕其周边的三角形创建一个3d网格。这张图显示了您可以执行此操作的一种方式(橙色线代表三角形边缘):

这类事情可以由人类直观地完成,但是在将其转换为有效的算法方面确实遇到了麻烦。
多边形存储为List<Vector2>。它们将总是简单的,并且可能是凹形的。
所以,如果我有以下向量,其中包含几个指向int的指针:
std::vector<MyClass*> list;
Run Code Online (Sandbox Code Playgroud)
我可以稍后使用以下内容迭代它:
for (auto & (*item) : list)
{
item.member = something; //Goal is to require no dereferencing here
}
Run Code Online (Sandbox Code Playgroud)
使用对列表内容的值的引用比使用它们的指针稍微方便一点.
这里有一些代码无法编译,因为push_back试图在MoveOnlyClass中调用复制构造函数,该构造函数被删除:
class MoveOnlyClass
{
public:
MoveOnlyClass() {};
MoveOnlyClass& operator=(const MoveOnlyClass& other) = delete;
MoveOnlyClass(const MoveOnlyClass& other) = delete;
};
int main()
{
std::vector<MoveOnlyClass> vec;
vec.push_back(std::move(MoveOnlyClass()));
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?当然,向量应该调用的唯一东西是移动构造函数.将对象移动到向量中的正确方法是什么?