gpt4 book ai didi

c++ - 如何获得唯一指针列表?

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:04 25 4
gpt4 key购买 nike

我有一个

class Widget;
std::list<Widget*> listOfPointers;

listOfPointers 可能包含两个或多个指向同一对象的指针。所有指针都指向在堆上一个一个创建的对象,并且不是同一数组的成员。

我怎样才能去掉重复项

我试过:

listOfPointers.sort();
listOfPointers.unique();

但这是自 operator < is not defined for pointers in my problem. 以来未定义的行为

我可以使用定义的运算符==将每个指针相互比较,但这会导致二次复杂度。

最佳答案

您可以使用 sort 的另一个重载使用比较器/二进制谓词,并提供 std::less<Widget*>作为谓词:std::less有幸能够比较任意指针(因此您可以在 set 中使用它们或在 map 中用作键)。

listOfPointers.sort(std::less<Widget*>());
listOfPointers.unique();

但是,我想指出 std::list::sort由于列表不提供随机访问,因此效率不是特别高。

关于c++ - 如何获得唯一指针列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19077184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com