文檔:在範圍
template <class InputIterator, class T> InputIterator find (InputIterator first, InputIterator last, const T& val);
查找值,則返回在其比較等於VAL範圍[第一,最後一個)的迭代器到所述第一元件。如果沒有找到這樣的元素,該函數最後返回。
該功能使用operator==
將各個元素與val進行比較。
編譯器不會爲類生成默認的operator==
。您必須定義它以便能夠使用std::find
以及包含您班級實例的容器。
class A
{
int a;
};
class B
{
bool operator==(const& rhs) const { return this->b == rhs.b;}
int b;
};
void foo()
{
std::vector<A> aList;
A a;
std::find(aList.begin(), aList.end(), a); // NOT OK. A::operator== does not exist.
std::vector<B> bList;
B b;
std::find(bList.begin(), bList.end(), b); // OK. B::operator== exists.
}
您是否爲您的班級重載'operator =='? – yizzlez
不,我沒有,那實際上是問題,謝謝! – user3453494