0
在我的代碼中,如果我找到該項目,我想通知for_each?那是怎麼回事?如何在這種情況下返回true或false以for_each?
#include <list>
#include <algorithm>
#include <functional>
using namespace std;
class widget {
public:
widget(int id) : m_id(id) {}
private:
int m_id;
};
class findwidget {
public:
findwidget(widget* p) : m_widget(p) {}
bool operator()(widget* p) const {
return p == m_widget ? true : false;
}
widget* m_widget;
};
list<widget*> m_widgetList;
void push_back(widget* pi){
if(m_widgetList.empty()) {
m_widgetList.push_back(pi);
} else {
if(!std::for_each(m_widgetList.begin(), m_widgetList.end(), findwidget(pi)))
m_widgetList.push_back(pi);
}
}
int main(int argc, char* argv[])
{
widget w1(1);
push_back(&w1);
return 0;
}
+1對於'std :: set'(我會考慮C++ 0x中的'std :: unordered_set',因爲順序似乎沒有導入)。數據結構的適當選擇是最基本的,「std :: list」的使用通常是可疑的(僅僅因爲人們似乎只知道列表...)。 –