查找向量数组中是否存在具有相同值的结构
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;
};
我想检查向量数组中是否有具有相同值的结构。有人可以向我解释一下我应该怎么做吗?
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;
};