精华内容
下载资源
问答
  • 不过今天我要说的不是这个,而是Vector类中的capacity方法。先看看下面这段关于Vector类中的capacity方法的代码。这段代码中使用了Vector类的三个方法,add方法、size方法和capacity方法。add方法、size方法大家经常...

    在各种Java面试题中,想必大家是有见到过Vector这个类吧。一般都是说Vector是同步的这个点。

    3aec2502d7e039ba9aa027071710d39c.png

    不过今天我要说的不是这个,而是Vector类中的capacity方法。

    先看看下面这段关于Vector类中的capacity方法的代码。

    8043d77f974ca2307d072e5a03529894.png

    这段代码中使用了Vector类的三个方法,add方法、size方法和capacity方法。add方法、size方法大家经常用就不多说了,那capacity方法是干什么的呢。

    capacity单词的意思是容量、容积。这个方法的意思就是获取Vector类对象的容量。

    拿上面代码的执行结果来解释一下吧。

    254873c3b3dcdb43d17275c2bd6ca13f.png

    我这里实例化是使用的默认的构造方法,大家可以看一下源码,默认的构造方法中,给这个对象设置的初始容量是10。那就是说这个Vector类对象(一个动态数组)初始化后可以放10个元素。

    然后执行的结果就会输出size是0(因为一个元素都没有存入),而容量就是上面说的10。

    这时候执行add方法存入一个元素,于是输出的size就是1了,容量不会改变,还是10。

    那如果存入的元素操作10个呢,就需要自动扩容了。就是上面的第三组自行结果了,当存入的元素操作之前的容量时,容量扩容到了20。

    那这个扩容的规则是什么呢。看一看源码便知了。

    69dc5c3e74121b853c606fc76a612483.pngadd方法中调用了ensureCapacityHelper

    8e62e2b8bcc3aa12d4c19b8c83c4a200.pngensureCapacityHelper调用了grow

    c9aade92cd5d43f4ab1cc69ed4a2ed8c.pnggrow方法是扩容的实现

    其中capacityIncrement是扩容增量,public Vector(int initialCapacity, int capacityIncrement)这个构造方法可以指定,默认扩容增量为0.

    从grow方法中我们可以看到,如果增量不为0,则每次容量不足时按照增量去增加容量。如果增量为0,则每次容量不足时会将当前容量翻倍。

    今天的关于Vector类中的capacity方法的内容就到这里了。

    展开全文
  • <div><p>Is it possible to make fixed_capacity_vector work for Visual studio 2017?</p><p>该提问来源于开源项目:gnzlbg/static_vector</p></div>
  • vector_capacity

    2019-05-08 01:04:47
    capacity:向量的容量,可能大于或等于向量实际的长度 size:向量实际的容量,是多少就是多少 max_size:向量实际可以存放下的最大空间 ...vector> //返回分配的存储容量大小 //返回当前分配给向量的存...

    capacity:向量的容量,可能大于或等于向量实际的长度
    size:向量实际的容量,是多少就是多少
    max_size:向量实际可以存放下的最大空间
    三者的区别

    // comparing size, capacity and max_size
    #include <iostream>
    #include <vector>
    
    //返回分配的存储容量大小
    //返回当前分配给向量的存储空间的大小,用元素表示。
    //这个容量不一定等于向量的大小。它可以是相等的或更大的,有额外的空间允许容纳增长,而不需要在每次插入时重新分配。
    //注意,这个容量并不假设向量的大小受到限制。当这个容量耗尽并且需要更多容量时,容器会自动扩展它(重新分配它的存储空间)。向量大小的理论极限由成员max_size给出。
    //向量的容量可以通过调用成员向量::reserve显式地更改。
    
    int main ()
    {
      std::vector<int> myvector;
    
      // set some content in the vector:
      for (int i=0; i<100; i++) myvector.push_back(i);
    
      std::cout << "size: " << (int) myvector.size() << '\n';
      std::cout << "capacity: " << (int) myvector.capacity() << '\n';
      std::cout << "max_size: " << (int) myvector.max_size() << '\n';
      return 0;
    }
    
    Output:
    size: 100
    capacity: 128
    max_size: 1073741823
    
    展开全文
  • vector size capacity

    2020-12-07 13:46:30
  • vector::capacity

    2016-07-23 12:55:27
    vector::capacity(容量) Return size of allocated storage capacity Returns the size of the storage space currently allocated for the vector, expressed in terms of elements. This capacity...

    vector::capacity(容量)

    Return size of allocated storage capacity
    Returns the size of the storage space currently allocated for the vector, expressed in terms of elements.

    This capacity is not necessarily equal to the vector size. It can be equal or greater, with the extra space allowing to accommodate for growth without the need to reallocate on each insertion.

    Notice that this capacity does not suppose a limit on the size of the vector. When this capacity is exhausted and more is needed, it is automatically expanded by the container (reallocating it storage space). The theoretical limit on the size of a vector is given by member max_size.

    The capacity of a vector can be explicitly altered by calling member vector::reserve.

    Parameters

    none

    Return Value

    The size of the currently allocated storage capacity in the vector, measured in terms of the number elements it can hold.

    Member type size_type is an unsigned integral type.

    capacity的意思是容量,此方法返回的是该vector对象最多能容纳多少个元素。
    size的意思是大小,此方法是返回该vector对象当前有多少个元素。
    // comparing size, capacity and max_size
    #include <iostream>
    #include <vector>
    using namespace std;
    int main ()
    {
      std::vector<int> myvector;
    
      // set some content in the vector:
      for (int i=0; i<100; i++) myvector.push_back(i);
    
      cout << "size: " << (int) myvector.size() << '\n';
      cout << "capacity: " << (int) myvector.capacity() << '\n';
      cout << "max_size: " << (int) myvector.max_size() << '\n';
      return 0;
    }


    展开全文
  • vector.capacity(),返回向量的容量2. 当添加元素时,超过了容器的容量(即capacity),则将从新分配容器内存空间,迭代器也会失效,迭代器需要重新赋值 每次增加原容量的一半#include #include <vector> using ...
  • <div><p>If efficiency is one of the main points of this extension, and the main point of the Vector class is for a value’s index to be a direct mapping to its index in the buffer, wouldn'...
  • 关于vector-capacity

    2012-01-19 05:26:35
    还是老样子,如果有错或者任何问题,请大家多指正。 C++中的vector的一个问题是它会预留一部份空间以避免vector在内存里的拷贝,这...那么有没有办法使vectorcapacity恰好等于它的size呢?我在C++ documentat
  • 关于vector大小(size)和容量(capacity)总结

    万次阅读 多人点赞 2016-04-08 22:37:03
    主要介绍了vector 容器大小相关的操作函数(size、max_szie、capacity),同时介绍了容器大小超出容器capacity能力会内存重新分配以及iterator失效简单分析。同时给出了避免内存重新分配的两种方法。
  • vector学习

    2019-08-11 17:03:43
    vector学习Vector ConstructorVector CapacityVector AccessVector ModifiersVector Iterators: Vector Constructor #include<iostream> #include<vector> using namespace std; int main(){ vector&....
  • vectorcapacity和size

    千次阅读 2012-10-28 11:22:02
    vector提供了capacity和size获取大小。但是这两个大小是不一样的。有结论:capacity一定是大于或者等于size的。 解释如下: 当我们使用 vector vec(10,9) 创建一个vector时,实际上是执行了以下函数: void...
  • vectorcapacity()调用返回vector中最大能够存储的元素个数,也即在下一次需要扩充容量之前能容纳的元素个数。reserve会使容器在必要的时候增长,以便容纳制指定数目的元素。 #include <iostream> #...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,954
精华内容 781
关键字:

capacityvector