【发布时间】:2019-05-27 17:40:13
【问题描述】:
在算法挑战网站上进行一些测试时,我遇到了这个问题,我的std::unordered_set 在使用基于范围的 init 时(有点)减慢了我的速度:
void test(vector<int>& nums1) {
unordered_set<int> set1(nums1.begin(), nums1.end());
}
慢于
vector<int> test(vector<int>& nums1) {
unordered_set<int> set1;
for (auto num : nums1) {
set1.insert(num);
}
}
如何解释?
【问题讨论】:
-
在询问性能测量时,请显示您的完整基准代码(包括使用的编译器优化级别)。
-
这两个使用 same 数据集进行测试的地方(即 nums1 在两个基准测试中完全相同,我的意思不是大小,而是向量的内容)?
-
您的第二个
test具有非void返回类型并且没有return。这也是两个功能之间的差异。进行基准测试时,请尽量保持所有内容完全相同,除了您要衡量的内容。
标签: c++ algorithm vector stl set