C++ reserve和resize的区别

前置知识:

capacity是指容器的容量,指该容器如果不重新分配内存,最多只能容纳capacity个元素。

size是指容器中当前存在的元素个数。

capacity和size的关系:size <= capacity

 

reserve(n)是指为容器至少预分配n * sizeof(元素)的容量。如果分配的n<size,则不会起作用。

    std::vector<int> a(11);
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:11 11
    a.reserve(10);
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:11 11
    a.push_back(1); 
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:12 16
    a.reserve(17);
    std::cout << a.size() << ' ' << a.capacity();//输出:12 17

resize(n)是指采用无参(默认)构造函数,将容器中的元素数量扩展或缩减至n。如果capacity<n,则重新分配容器空间,使capacity>=n。

    std::vector<int> a(11);
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:11 11
    a.push_back(1); 
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:12 16
    a.resize(17);
    std::cout << a.size() << ' ' << a.capacity();//输出:17 24

(以上均为Visual Studio2019,c++ 14标准下的测试结果)

posted @ 2022-07-13 15:54  mshentai  阅读(128)  评论(0编辑  收藏  举报