gpt4 book ai didi

c++ - 找到指向同一对象的两组指针之间的差异

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:54 26 4
gpt4 key购买 nike

如何找到指向同一对象的两组指针之间的差异?

有没有一种不用遍历两个集合的所有对象的有效方法。

我有两套:

std::set<Object*>

如果一个对象的私有(private)成员(名称)与其他对象名称相同,则表示该对象相同。

最佳答案

STL 的算法库很棒、可扩展且未被充分利用。

这将为您提供作为 vector 的集合差异(我想您可以将其转换为集合,但没有必要,至少对于您所要求的,并且 vector 更快,因为集合已经排序)。

template<typename T>
std::vector<T> set_diff(std::set<T> const &a, std::set<T> const &b) {
std::vector v<T>;
std::set_difference(a.begin(), a.end(), b.begin(), b.end(), v.begin());
return v;
}

可选地,放在构造函数之后

    v.reserve(a.size() + b.size());

返回前 (C++11)

    v.shrink_to_fit();

注意:这会产生 a 中的项目,但 b 中没有。要查找两者之一中的所有项目而不是另一个,请改用 std::set_symmetric_difference

关于c++ - 找到指向同一对象的两组指针之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078861/

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