admin管理员组文章数量:1611937
系统是CentOS 7,不同系统的capacity翻倍策略会有些不一样,这里是2倍
说明都在代码中的注释里
//
// Created by Aaj on 2021/9/11.
//
#include <bits/stdc++.h>
using namespace std;
int main(){
//size是当前vector中的元素个数,capacity是vector当前可容纳的元素个数
//当使用push_back等操作使得size超过capacity后,capacity会翻倍,原先的2倍
//resize会更改size大小,若size超过capacity则capacity变为和size一样的值
//reserve会更改capacity大小,若更改后capacity小于size,那么capacity保留原来的值,不发生更改,capacity只会增大不减小
vector<int> v;
cout<<"开始:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
v.push_back(1);
cout<<"追加1:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
v.push_back(2);
cout<<"追加2:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
v.push_back(3);
cout<<"追加3:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
v.push_back(4);
cout<<"追加4:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
v.push_back(5);
cout<<"追加5:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
//使用resize修改size,若修改的size小于capacity,capacity不变
v.resize(2);
cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
//使用resize修改size,若修改的size大于capacity,capacity变为和size一样的值
v.resize(50);
cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
v.resize(100);
cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
v.push_back(101);
cout<<"追加101:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
//使用reserve修改capacity,若修改后的capacity小于size,capacity不变
v.reserve(4);
cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
//使用reserve修改capacity,若修改后的capacity大于size且大于原先的capacity,capacity改变
v.reserve(50);
cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;//capacity不变
v.reserve(300);
cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;//capacity改变
//使用reserve修改capacity,若修改后的capacity大于size且小于原先的capacity,capacity不变
//说明capacity只会增大不会减少
v.resize(10);
cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
v.reserve(11);
cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
return 0;
}
运行结果:
本文标签: 区别sizeVectorCapacityreserve
版权声明:本文标题:vector中的size和capacity区别,以及resize和reserve的使用 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728619643a1166183.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论