我正在尝试std::find()为std::unordered_set、std::set、 和计时该函数std::vector。但结果对我来说很奇怪。
unordered_set在an 中查找元素比在 a 中查找元素需要更多时间vector。
理论上,搜索的时间复杂度应该为O(1)forunordered_set和O(n)for vector。
那么,在 an 中查找元素应该unordered_set比更快吗vector?我做错什么了吗?
这是我的代码:
#include <iostream>
#include <vector>
#include <set>
#include <unordered_set>
#include <algorithm>
#include <random>
#include <numeric>
#include <chrono>
using namespace std;
int main(int argc, char** argv)
{
int size = 10000;
vector<int> items(size);
iota(items.begin(), items.end(), 0);
auto rng = default_random_engine {};
shuffle(items.begin(), items.end(), rng);
chrono::steady_clock::time_point begin, end;
unordered_set<int> …Run Code Online (Sandbox Code Playgroud)