查找向量数组中是否存在具有相同值的结构

Find if structures with same values exist in vector array

我想检查向量数组中是否有具有相同值的结构。有人可以向我解释一下我应该怎么做吗?

struct mineCoordinate{
int x;
int y;
};

std::vector<mineCoordinate> mines;  // vector array
if(std::find(mines.begin(), mines.end(), mineCoordinate{userInputX,userInputY}) != mines.end()) { 
//do something if true.}

如您所见,我尝试了 std::find 函数,我认为它应该有效( 这是大多数像我这样的问题的答案)。唯一的条件是比较相同的对象

您的代码中似乎缺少对两个 mineCoordinate 对象相等意味着什么的定义。如果你加上这个

bool operator==(const mineCoordinate& a, const mineCoordinate& b)
{
    return a.x == b.x && a.y == b.y;
}

那我觉得也行。

您可能认为这个定义很明显,不需要明确定义,但这是不正确的。

如果你使用的是C++20,你可以默认==运算符吗:

struct mineCoordinate 
{
  int x;
  int y;
  bool operator==(const mineCoordinate&) const = default;
};