欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vector resize 和 reserve 的区别

程序员文章站 2022-03-01 22:17:33
...

前言:

一般在容器声明的时候, 有人会给vector 设置一大小, 会用 resize 和reserve 这两种都可以, 但具体的区别,和差异是什么?

reserve:

        std::vector<int>vec;
        vec.reserve(10);
        std::cout<<vec.size()<<std::endl;
        std::cout<<vec.capacity()<<std::endl;

        vec[0] = 0;
        vec[1] = 1;

size是0  capacity 是10. 他的作用是申请预留空间 (capacity)但是并未初始化。所以他的size 是0. 并且最后两行的赋值是无效的(因为并未初始化 size == 0),必须使用push_back 或insert

resize:

        std::vector<int>vec1;
        vec1.resize(10);
        std::cout<<vec1.size()<<std::endl;
        std::cout<<vec1.capacity()<<std::endl;
        vec1[0] = 0;
        vec1[1] = 1;
        

size 和 capacity 是10. 他的作用是申请预留空间 (capacity 并且初始化子元素。

所以最后两行 是可以进行 [] 赋值操作

 

相关标签: STL c++ stl