zoukankan      html  css  js  c++  java
  • C++ vector对象是如何增长的

    为了支持快速随机访问,vector将元素连续存储---每个元素紧挨着前一个元素存储。

    如果没有空间容纳新元素:

    1. 容器必须分配新的内存空间来保存已有元素和新元素,将已有元素从旧位置移动到新空间中,然后添加新元素,释放旧存储空间。
    2. vector和string的实现通常会分配比新的空间需求更大的内存空间。容器预留这些空间作为备用,可以用来保存更多的新元素。

    管理容器的成员函数

    1. capacity操作告诉我们容器在不扩张内存空间的情况下可以容纳多少个元素。
    2. reverse操作允许我们通知容器它应该准备保存多少个元素。

    capacity和size

    1. size是指它已经保存的元素的数目;
    2. capacity是在不分配新的内存空间的前提下它最多可以保存多少个元素。
    int main()
    {
        vector<int> a;
        for(int i = 0; i < 24; ++ i) a.push_back(i);
        cout << a.size() << endl;     //输出size为24
        cout << a.capacity() << endl; //输出capacity为32,capacity大于等于size
        return 0;
    }
    

    Note:每个vector实现都可以选择自己的内存分配策略。但是必须遵守的一条原则是:只有当迫不得已时才可以分配新的内存空间。

  • 相关阅读:
    沙雕玩意儿
    1558:聚会 ybt
    沙雕关于线段树的一点总结(滑稽)
    卑微
    沙雕题目 来自luogu
    甜茶好帅啊
    python 中字符串的格式化
    python的几个小程序
    python 第一课
    基于笔画宽度变换的自然场景文本检测方法
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12169353.html
Copyright © 2011-2022 走看看