优化速度的几个技巧

1. push_back -> emplace_back:和拷贝有关

2. for (auto one : nums) -> for (const auto& one : nums) :事实证明,没有&就是拷贝实现的,引用更快一些,但是假如不修改,最好使用const

3. 选对STL容器

①  map -> unordered_map

② map/set:基于RB-tree实现,可以自动排序,查找的效率很高,为logn;

但是插入和删除的时间复杂度为nlgn,频繁插入和删除的时候不适合选用!

③ hash_map,hash_set:基于hash_table实现,没有排序功能,

④ priority_queue:优先队列,比着队列的后入先出,优先队列可以自定义优先级,让优先级高的元素先出来

比如求“滑动窗口的最大值”,只需要求最大值,不需要map等全元素排序的容器。

4. 不要对vector做erase操作,假如对vector做很多erase操作,不如另起一个vector,使用emplace_back()

5. 时间优先级更高一些,也就是说假如可以使用vector记录信息,那就毫不犹豫地申请!

原文地址:https://www.cnblogs.com/Younger-Zhang/p/15071870.html