我无法理解逻辑。我有两个具有相同元素数的容器:vector和unordered_map。
我正在使用函数来检查某些函数的时间复杂度并以毫秒为单位返回值
auto funcComplexity = [](auto&& func, auto&&... params)
{
const auto& start = high_resolution_clock::now();
for (auto i = 0; i < 100; ++i)
{
// function invocation using perfect forwarding
std::forward<decltype(func)>(func)(std::forward<decltype(params)>(params)...);
}
const auto& stop = high_resolution_clock::now();
return duration_cast<duration<double, std::milli>>(stop - start).count();
};
Run Code Online (Sandbox Code Playgroud)
当我从 中间删除一个元素时vector,实际上比从 中删除元素所花费的时间更少unordered_map
void iterateUMap(std::unordered_map<int, Test> map)
{
map.erase(500);
}
void iterateVector(std::vector<Test> vector)
{
std::remove_if(vector.begin(), vector.end(), [](Test& val)
{
return val.mId == 500;
});
}
int main()
{
auto …Run Code Online (Sandbox Code Playgroud)