网上没办法轻易找到解决办法...
我有类似以下的东西。
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::find 实际上尊重 smart_pointers 并比较对象字符串而不是它们的内存地址?我的第一种方法是编写一个自定义的 std::equal 函数,但是它不接受模板作为自己的模板类型。