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"}