首先要搞清楚,如果 STL 有性能问题,那么问题出在哪里?
    STL 可以简单地认为就是算法+数据结构,所有容器的算法选择和实现都是经过精心设计和严格测试的,几个主流STL 实现都不会有大问题。

    性能问题通常都出在内存数据操作上,内存操作有三种,**内存读取、内存复制和内存分配**。

    选择合适容器的依据就是要尽量减少内存操作尤其是复制操作,比如频繁中间插入删除就不要选 Vector,频繁随机访问就不要选 list

    除了选错容器这种低级错误外,性能瓶颈基本都是出在容器内的对象身上,解决方案:

    1. 容器内放对象指针,而不是实例,对象生命周期自己管理,只有在真的有性能问题时才考虑这样做,因为内存泄漏的风险还是挺高的。
    2. 自己定义 allocator ,实现对象内存池,只有在确认内存分配是瓶颈时才用。
    3. 不拿两个容器实例做赋值操作,传入参数用指针或引用,传出的参数用 swap 来实现容器数据传递,务必确认自己清楚知道在做什么。