在線無法輕鬆找到解決方案...執行std :: equal與tr1 :: shared_ptr類型
我有類似以下內容。
class Color {
public:
Color(std::string n) : name(n) {}
typedef std::tr1::shared_ptr<Color> Ptr;
std::string name;
};
同時別處......
void Function()
{
std::vector<Color::Ptr> myVector;
Color::Ptr p1 = Color::Ptr(new Color("BLUE"));
Color::Ptr p2 = Color::Ptr(new Color("BLUE"));
// Note: p2 not added.
myVector.push_back(p1);
// This is where my predicament comes in..
std::find(myVector.begin(), myVector.end(), p2);
}
我怎麼會寫這個,所以我的std ::發現實際上尊重的smart_pointers和比較對象的字符串,而不是他們的內存地址?我的第一種方法是編寫自定義的std :: equal函數,但它不接受模板作爲自己的模板類型。
讓我們看看你已經嘗試了什麼...... –