美文网首页
Effective STL 第14条

Effective STL 第14条

作者: 懒生活 | 来源:发表于2022-09-14 23:06 被阅读0次

    创建vector或者string之后,考虑一次reserve.
    如果能够精确reserve数量,那么跟定义数组就有些类似了,但不同的是,vector, string允许你"越界", 当vector string 发现越界的时候会自动开辟新的更大的空间,然后把旧空间的数据逐个拷贝到新空间.然后释放旧空间. reserve的目的并不是限定明确的界限,而只是尽量的避免后续出现的"越界"导致的资源消耗.
    对于vector string 要注意区分4个成员函数:
    size() 返回当前容器的有效成员个数
    capacity() 返回当前容器最多可以容纳的成员个数
    resize(n) 设定当前容器的有效成员个数,如果n比当前size小,那么多余的元素会被析构.如果n比当前的size大,那么会默认构建元素并添加到容器内.如果n比capacity还大,那么会先触发重新malloc
    reserve(n) 当n比当前capacity大的时候会触发重新malloc, 当时当n比当前capacity小的时候,该函数什么都不做,容器的容量不会减少.要真正减小容器的容量,需要使用swap技术. 当然现在可以直接调用shrink_to_fit

    相关文章

      网友评论

          本文标题:Effective STL 第14条

          本文链接:https://www.haomeiwen.com/subject/coalortx.html