我有一个向量v包含类型结构的对象说A.现在我需要找到存储在这个向量中的特定对象的迭代器。 e.g:
struct a
{
};
vector<a> v;
struct temp; //initialized
现在我将使用
find(v.begin(),v.end(), temp);
然后编译器生成错误,表示与运算符'=='
不匹配。
获取与向量中的对象相对应的迭代器的任何解决方法?
答案 0 :(得分:2)
您必须为您的班级提供bool operator==(const a& lhs, const a& rhs)
平等运算符,或将比较函数传递给std::find_if
:
struct FindHelper
{
FindHelper(const a& elem) : elem_(elem) {}
bool operator()(const a& obj) const
{
// implement equality logic here using elem_ and obj
}
const a& elem_;
};
vector<a> v;
a temp;
auto it = std::find_if(v.begin(), v.end(), FindHelper(temp));
或者,在c ++ 11中,您可以使用lambda函数而不是函子。
auto it = std::find_if(v.begin(), v.end(),
[&temp](const a& elem) { /* implement logic here */ });