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标准下的测试结果)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步