`
美丽的小岛
  • 浏览: 312823 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

c++ vector resize & reserve

    博客分类:
  • c++
 
阅读更多

首先必须弄清楚两个概念:

1.capacity

     指容器在分配新的存储空间之前能存储的元素总数。

2. size

     指当前容器所存储的元素个数

在弄清这两个概念以后,很容易懂resize和reserve的区别

 

1).reserve表示容器预留空间,但并不是真正的创建对象,需要通过insert()或push_back()等创建对象。

resize既分配了空间,也创建了对象。

 

2).reserve只修改capacity大小,不修改size大小,resize既修改capacity大小,也修改size大小。

void TestVector(){
    vector <int> wgw;
    cout << "initilize size is: " << wgw.size() << endl;
    cout << "initilize capacity is :" << wgw.capacity() <<endl;
    wgw.reserve(10);
    cout << "wgw size is: " << wgw.size() << endl;
    cout << "wgw capacity is :" << wgw.capacity() <<endl;

    vector <int>wgw1;
    wgw1.resize(20);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.push_back(1);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.pop_back();
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.resize(21);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.resize(1);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.reserve(1);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.reserve(100);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;
}

 

 

Erase与Size与capacity的关系。。。

void TestEraseVector()
{
    unsigned int i;
    vector<unsigned int> myvector;

    // set some values (from 1 to 10)
    for (i=1; i<=10; i++) myvector.push_back(i);
    
    //show01
    cout << "size is: "<< myvector.size() << endl;
    cout << "capacity is:" << myvector.capacity() << endl;

    // erase the 6th element
    myvector.erase (myvector.begin()+5);

    // erase the first 3 elements:
    myvector.erase (myvector.begin(),myvector.begin()+3);

    cout << "myvector contains:";
    for (i=0; i<myvector.size(); i++)
        cout << " " << myvector[i];
    cout << endl;
    //show02
    cout << "size is: "<< myvector.size() << endl;
    cout << "capacity is:" << myvector.capacity() << endl;

}

 

 

  • 大小: 59.7 KB
  • 大小: 29.7 KB
分享到:
评论

相关推荐

    72_vector的扩容原理以及resize和reserve的区别1

    理解不同编译器的实现差异,以及如何利用`resize()`和`reserve()`优化内存管理,对于编写高效、内存友好的C++代码至关重要。在实际编程中,根据具体需求选择合适的扩容策略和内存预分配方法,可以帮助我们构建更加...

    C++ 模板类 vector

    若需要改变大小,`resize()`方法可调整`vector`大小。 4. **迭代器**:`vector`提供了迭代器,可以遍历所有元素。`begin()`返回首元素的迭代器,`end()`返回超出最后一个元素之后的迭代器。 二、`vector`操作 1. ...

    C++ Vector用法详解

    14. `reserve(n)`:增加Vector的容量到n个元素的大小,如果n大于当前的capacity(),则重新分配内存。 15. `resize(n)`:调整Vector的大小为n个元素。如果n小于当前大小,则Vector将被缩短;如果n大于当前大小,则会...

    c++ vector使用

    - **resize**: 改变`vector`的大小。 - **reserve**: 预先分配内存,避免频繁的内存分配与释放。 - **size**: 返回`vector`当前的元素数量。 #### 创建Vector实例 `vector`提供了多种构造方法,可以根据需求灵活...

    c++ vector(向量)使用方法详解.pdf

    C++中的`std::vector`是一个动态数组,属于标准模板库(STL)的一部分,提供了一种高效的方式来存储和操作元素序列。在C++编程中,`vector`常被用来代替传统的C风格数组,因为它提供了更多的便利功能和安全性。 ###...

    c++ vector(向量)使用方法详解(顺序访问vector的多种方式)

    C++中的`std::vector`是一个动态数组,它允许存储同一类型的元素集合,并提供了高效的操作接口。`vector`是标准模板库(STL)的一部分,是C++编程中常用的数据结构之一。以下是对`vector`的详细介绍,以及如何进行...

    c++ vector(向量)使用方法详解.docx

    C++ Vector(向量)使用方法详解 C++ STL 中的 vector 是一种非常重要的容器类,它可以容纳许多类型的数据,如整数、浮点数、字符串等,因此也称其为容器。使用 vector 需要包含头文件 `#include &lt;vector&gt;`。 一、...

    C++的Vector实现.zip

    在C++编程中,STL(Standard Template Library,标准模板库)是一个强大的工具集,它包含了许多容器类,如vector、list、set等。其中,`std::vector`是一个动态数组,提供了方便的序列容器功能,允许高效地进行元素...

    c++ vector(向量)使用方法详解 (2).pdf

    C++中的`std::vector`是一个动态数组,是标准模板库(STL)的一部分,用于存储同类型的元素集合。它的特点是可以在运行时改变大小,提供了数组的便利性和动态内存管理的功能。下面将详细介绍`vector`的使用方法。 1. ...

    vector常用方法

    Vector 是 C++ STL 中的一种容器,用于存储对象数组。以下是 Vector 的常用方法: 1. push_back():在数组的最后添加一个数据。 2. pop_back():去掉数组的最后一个数据。 3. at():得到编号位置的数据。 4. begin...

    c++ vector模拟实现代码

    C++中的`vector`是一个非常重要的STL容器,它提供了类似于动态数组的功能,允许在运行时改变其大小。下面我们将详细讨论`vector`的主要特点、内部实现原理以及模拟实现的代码解析。 1. **vector的基本特性** - `...

    c++中vector的用法详解.doc.docx

    * `resize`:改变当前 vector 的大小。 * `reserve`:改变当前 vector 的容量大小。 * `erase`:删除指定位置的元素。 * `clear`:清空 vector。 * `rbegin`:获取反转后的开始指针。 * `rend`:获取反转后的...

    c++ vector(向量)使用方法详解 (2).docx

    C++中的`std::vector`是一种动态数组,是标准模板库(STL)的一部分,提供了高效且灵活的序列容器功能。它允许存储任意类型的元素,并且可以在运行时自动调整大小。以下是对`std::vector`使用方法的详细解释: ### ...

    c++中vector的用法详解-vector类用法.docx

    ### C++中Vector的用法详解 #### 一、引言 `vector`是C++标准模板库(STL)中的一个重要容器,它提供了一种类似于动态数组的数据结构。与传统数组相比,`vector`能够自动调整其大小以适应数据的需求变化,这使得它...

    C++ vector操作实现

    C++ Vector操作实现详解 C++ 中的 Vector 是一个非常有用的容器,它能够像容器一样存放各种类型的对象,简单地说,Vector 是一个能够存放任意类型的动态数组,能够增加和压缩数据。Vector 在 C++ 标准模板库中的...

    C++中的vector容器对象学习笔记

    C++中的`vector`容器是标准模板库(STL)中的一种动态数组,它允许程序员在运行时高效地添加、删除和访问元素。`vector`是一个类模板,这意味着它可以用来存储不同类型的元素,只要提供了元素的类型作为模板参数。例如...

    MFC,C++,Vector使用.pdf

    MFC、C++、Vector 使用标准库 Vector 是一个类模板,需要包含头文件 `#include &lt;vector&gt;`。下面是 Vector 的详细知识点: 定义和初始化 Vector&lt;T&gt; v1; // 默认构造函数 v1 为空 Vector&lt;T&gt; v2(v1); // v2 是 v1 的...

    c++中vector的用法详解vector类用法.docx

    C++中的`std::vector`是一个模板类,用于表示动态数组。它提供了许多方便的成员函数,使得在处理数组时更加灵活高效。`std::vector`的使用涉及到以下几个主要方面: 1. **声明与初始化**: - `std::vector&lt;T&gt; vec;...

Global site tag (gtag.js) - Google Analytics