【发布时间】:2022-07-01 02:56:56
【问题描述】:
我有一个返回向量向量的函数。我需要解开它并将其存储在像 unordered_map 这样的容器中,以便查找更快。
vector<ssc> SSC = getSsc();
对于来自getSsc() 的每个元素,说sid 是另一个ID 向量,比如cid。它们看起来像这样:
SSC = [s1, s2, s3, s4] 和 SCC 的每个元素就像:
s1 = [c1, c2, c3, c4]
s2 = [c5, c6]
s3 = [c7]
如果我查询c5 或c6,我需要查找cid,以便它返回s2。我可以做两个 for 循环并填充一个 unordered_map 容器。但是有没有一种有效的方法来做到这一点?
c1, .... n 和 s1, .... n 是唯一 ID。但是不同的cid 可以有相同的sid。
【问题讨论】:
-
这取决于您所说的高效,但您无法避免访问所有元素,也无法安全地将项目从多个线程插入到标准库容器中。但是,您可以计算 unordered_map 中的 cid 数和
reserve()空间。然后性能将尽可能好,没有重新散列和 cid 数量的线性复杂性。
标签: c++ vector big-o stdvector unordered-map