美文网首页
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中文版:50条有效使用STL的经验

    《Effective STL中文版:50条有效使用STL的经验》是EffectiveC++的第3卷,被评为“值得所...

  • 常用的 STL 查找算法

    常用的 STL 查找算法 《effective STL》中有句忠告,尽量用算法替代手写循环;查找少不了循环遍历,在...

  • Effective STL 第7条

    容器中的对象如果是指针,指针指向的资源,容器没有办法自动释放. 问题引出 容器在自己析构的时候,会把包含的对象逐个...

  • Effective STL 第28条

    正确使用reverse_iterator对于任何一个容器, 使用iterator, 你只可能正向正序访问容器内部的...

  • Effective STL 第22条

    主要不要修改set mutipleSet的key

  • Effective STL 第30条

    如果是区间操作,注意确保容器具有足够的区间 这个很矛盾, 我们害怕使用数组,就是因为数组有可能越界.为了不去考虑数...

  • Effective STL 第31条

    准确的选择排序算法 如果要对一个数列进行完全的排序,那么用sort是个不错的选择.但是如果只是部分排序, 要考虑更...

  • Effective STL 第34条

    为什么有些算法需要排序的区间 binary_search算法是二分查找, 这种查找需要查找空间的序列是有序的. 为...

  • Effective STL 第19条

    理解相等于等价相等的基础是 == , 如果x==y成立,就说明x和y的值相等对于有顺序关系的容器, 为了顺序的存在...

  • Effective STL 第25条

    散列表: 用key可以作为索引快速找到对应的value. 且这些对象在容器里面不排序. 散列表和标准关联容器set...

网友评论

      本文标题:Effective STL 第14条

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