【发布时间】:2011-03-04 15:54:52
【问题描述】:
我有 2 个向量,其中包含 Person(姓名、姓氏等)对象。我想取其中一个向量(我们将其命名为“大”),然后为该向量中的每个元素找到第二个(“小”)中的对应元素,并将“小”向量元素中的一些数据合并到“大”向量元素。此操作与 SQL 术语中的左连接非常相似,但对数据进行了额外的合并。最简单的方法是进行 2 个周期,但这会导致 O(n^2) 时间复杂度。我可以用 STL 算法做得更好吗?
【问题讨论】:
-
如果您从
vector切换到multiset,可能会做得更好。使用 Boost.MultiIndex 你甚至可以得到 O(n)。 -
@larsmans: 或哈希表(通常需要注意哈希表的实际与理论渐近性能)。散列函数由“对应元素”的定义决定,即仅对您要加入的字段进行散列。
标签: c++ algorithm stl stl-algorithm