C++ 查找std::list是否包含另一个std::list中的元素

C++ 查找std::list是否包含另一个std::list中的元素,c++,C++,我有两份清单: std::list<MyClass1> listClass1; std::list<MyClass2> listClass2; 我需要找出listClass2name属性是否在listclas1name中。我是说,如果他们匹配的话。否则返回错误或-1 有没有比两次循环更有效的方法?这就是我目前所能想到的,因此非常感谢您的帮助。您可以将列表中的一个名称(两个名称中较大的一个)存储到集合中,然后迭代另一个列表,查看该集合是否包含该元素 这将使您的运行时间从O

我有两份清单:

std::list<MyClass1> listClass1;
std::list<MyClass2> listClass2;
我需要找出
listClass2
name
属性是否在
listclas1
name
中。我是说,如果他们匹配的话。否则返回错误或-1

有没有比两次循环更有效的方法?这就是我目前所能想到的,因此非常感谢您的帮助。

您可以将列表中的一个名称(两个名称中较大的一个)存储到
集合中,然后迭代另一个列表,查看该集合是否包含该元素

这将使您的运行时间从O(m*n)减少到O(m*log(n))


附言:我相信使用哈希表可以进一步减少日志(n)因子。

std::unordered\u set
。我们不在乎秩序;仅关于存在。在这种情况下,一定要使用
unordered\u set
,因为它将提供固定时间的查找。如果容器已排序,则可以使用。
listClass1

{id: 1, name: "Test1"}
{id: 2, name: "Test2"}
{id: 3, name: "Test3"}
{id: 4, name: "Test4"}
{id: 5, name: "Test5"}

listClass2

{id: 1, name: "Test2"}
{id: 2, name: "Test5"}