![](/img/trans.png)
[英]std::vector and std::list find_if and max_element performance
[英]Find if std::list contains element from another std::list
我有兩個清單:
std::list<MyClass1> listClass1;
std::list<MyClass2> listClass2;
為簡單起見,假設它們具有以下元素:
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"}
我需要找出listClass2
name
屬性是否在listClass1
name
。 我的意思是,如果他們匹配。 否則返回錯誤或 -1。
有沒有比循環兩次更有效的方法? 這就是我目前所能想到的,所以任何幫助表示贊賞。
您可以將列表名稱中的一個(兩者中的較大者更好)存儲到set<string>
然后遍歷另一個列表並查看該集合是否包含該元素。
這應該將您的運行時間從 O(m * n) 減少到 O(m * log(n))。
PS:我相信使用哈希表可以進一步減少 log(n) 因素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.