【发布时间】:2015-09-15 22:44:40
【问题描述】:
我有一组指向自定义类 myClass 的指针:
set<myClass*> s;
我正在尝试使用 std::find 来验证 myClass * 类型的对象 O 是否包含在集合中,但这似乎不起作用 - 我认为 find 可能只适用于对象而不是指向对象的指针?有什么办法可以使这项工作?我尝试取消对指针的引用,但后来我意识到这显然行不通,因为我的 set 无论如何都是指向对象的指针之一。
set<myClass*> s;
/* set gets filled up with objects of type myClass */
myClass *O = new myClass();
if(s.find(O) != s.end())
cout<<"Found!\n";
我已经手动打印出O 的成员和集合中已经存在的一个对象,我知道它们是相同的。所以这段代码应该打印“找到!”但事实并非如此。
【问题讨论】:
-
请发布您遇到问题的代码。谢谢!
-
对数
std::set::find会比线性std::find更有效。 -
您确定要查找的对象
O是一个指针,如所述的myClass*类型,而不是myClass的实例? -
是的。我发布了一些示例代码来澄清。
-
您似乎没有将指针添加到集合中...