我有一个看起来像
的课程class Element
{
public :
Element(int im_index, int seg_index)
{
imIndx = im_index;
segIndx = seg_index;
}
Element() { imIndx=-1 ; segIndx=-1; }
void getData( int & toReturnImIndx, int & toReturnSegIndx )
{
toReturnImIndx = imIndx;
toReturnSegIndx = segIndx;
}
// Specific for disjoint_sets
size_t dsID;
size_t dsRank;
size_t dsParent;
bool operator==(Element const& rhs);
bool operator!=(Element const& rhs);
bool compareByParent(Element const& rhs);
private:
int imIndx;
int segIndx;
};
唯一需要注意的是我已经定义了一个“==”运算符。
现在,给定Elements
(vector<Element>
)的向量,如何搜索其中的元素。我知道它有一个函数std::find
。该功能询问比较功能。如何指定“==”运算符。
我想像
一样使用它vector<Element> ele;
// populate the ele
Element tmp( 2,3 );
if( find( ele, tmp ) )
cout<< "found" ;
else
cout<< "not found";
答案 0 :(得分:1)
std::find
有三个参数。前两个是指示搜索范围的迭代器。如果要搜索整个向量,请分别传递向量的begin
和end
成员函数返回的迭代器。
Element tmp( 2,3 );
if( std::find( ele.begin(), ele.end(), tmp ) != ele.end() )
cout<< "found" ;
请注意,您应该声明比较运算符const。
bool operator==(Element const& rhs) const;