【发布时间】:2020-09-10 23:13:51
【问题描述】:
按值传递 unordered_set 是否有效?
我读到 unordered_set 包含大量的桶数组,即使元素较少也是如此。 如果它包含很少的元素(N ~ 10),那么将 unordered_set 复制到新的 unordered_set 的时间复杂度是多少? 会是 O(N) 还是其他?
(之前的问题有点模棱两可,所以我进行了编辑以使其更清楚。)
【问题讨论】:
-
根据经验,我总是建议将类对象作为指针或引用传递。我对存储桶并没有真正的经验,但即使我们的
st有指向它们的指针,unordered_set<int>也可能包含其他无法复制的成员。总是尽量避免复制类对象也有助于代码一致性 -
当您通过值传递
unordered_set时,它被复制,因此它的所有内容都被复制,无论它们如何存储。 (除非复制省略当然适用)。在大多数情况下,通过引用传递会更好。 -
实际上该函数使用不同的调用计算不同的子问题,因此通过引用传递它不会给出准确的结果...
-
@stark 实际上该函数使用不同的调用计算不同的子问题,因此通过引用传递它不会给出准确的结果 — 我完全不明白这个结论。为什么按引用传递会导致结果不准确?
-
您的问题缺乏细节。如何传递参数取决于函数的作用,您没有提供任何详细信息。此外,为了使您的问题更加混乱,您在 function 中添加了具有不同函数调用的不同子问题,因此通过引用传递将给出不准确/不需要的结果,而没有真正解释您的意思。毫无意义的问题。添加足够的细节。
标签: c++ set hashtable unordered-map unordered-set