c++ 判断类是否在vector中 std::find
时间: 2023-05-02 12:06:33 浏览: 103
在使用std::find函数判断类是否在vector中时,需要重载类的等于运算符(operator==)。
示例代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
class MyClass {
public:
int value;
MyClass(int val): value(val) {}
bool operator==(const MyClass& other) const {
return value == other.value;
}
};
int main() {
std::vector<MyClass> vec = {MyClass(1), MyClass(2), MyClass(3)};
MyClass target(2);
auto iter = std::find(vec.begin(), vec.end(), target);
if (iter != vec.end()) {
std::cout << "Found" << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
```
在上述代码中,MyClass类包含一个int类型的成员变量value,并重载了等于运算符。通过std::find函数在vector中查找target对象,如果找到则输出“Found”,否则输出“Not found”。
需要注意的是,在重载等于运算符时需要考虑对象的所有成员变量,并确保在两个对象相等时返回true。否则可能会导致找不到目标对象的情况。
阅读全文