询问一个关于vector中capacity()和size()的问题

saigirl saigirl 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
int main()
{
int inp =0;
vector<int> a;
cout<<"vec size: "<<a.size()<<endl;
cout<<"vec capacity: "<<a.capacity()<<endl;
while (inp != 10)
{
a.push_back(inp);
inp++;
}
cout<<"vec size: "<<a.size()<<endl;
cout<<"vec capacity: "<<a.capacity()<<endl;
a.reserve(20);
cout<<"After set reserve:"<<endl;
cout<<"vec size: "<<a.size()<<endl;
cout<<"vec capacity: "<<a.capacity()<<endl;

getchar();
getchar();
return 0;
}
结果为:

vec size: 0
vec capacity: 0
vec size: 10
vec capacity: 13
After set reserve:
vec size: 10
vec capacity: 20
但是如果我把while (inp != 10)改成while(cin>>inp, inp!=10) 然后输入1 3 4 10回车后结果为:
vec size: 0
vec capacity: 0
vec size: 3
vec capacity: 3
After set reserve:
vec size: 3
vec capacity: 20求各位牛人解释~~
...全文

相关推荐

二维vector,clear()操作请慎重,当心遇到vector subscript out of range问题

二维vector 今天想要用vector实现二维数组的功能,尝试了把二维vector.谁知道刚上手就遇到了雷. 代码的形式大致如下: vector<int>>vv(3); vv.clear(); for (int i = 0; i < 3; i++) vv[i].push_back(0); 因为要重复使用该二维vector,所以进行了清空操作.然而却遇到了问题:vector subscript out of range 原因 后来在单步调试时发现了,clear()会让二维vector的size变成0,之前声明的3个一维数组的结构遭到破坏.(但可以看到它的capacity容量还是之前的值,这个后面会讲到). 执行到for的头部时,自动窗口如下: 如何解决 对上述代码做下改变: vector<int>>vv(3); vv.clear(); vv.resize(3); for (int i = 0; i < 3; i++) vv[i].push_back(0); 相当于把外层的vector的长度又恢复到了之前的值. 同样是执行到for的头部时,自动窗口如下:

CodingLife99

C++ Vector用法详解

主要介绍了C++ Vector用法详解,vector是C++标准模版库(STL,Standard Template Library)中的部分内容,本文详细介绍了它的方方面面,需要的朋友可以参考下

weixin_38514872

C++ vector使用的一些注意事项

主要给大家介绍了关于C++ vector使用的一些注意事项,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

weixin_38707061

C++ Vector容量分析[项目代码]

本文探讨了C++中vector的三个成员函数size(), capacity(), max_size()的返回值意义及其关系。通过测试代码展示了在不同编译器下vector容量的变化情况,并得出结论:max_size是逻辑上的最大容量,具体值由编译器决定;capacity是当前状态下的最大容量,若不指定初始值,会从0开始并按一定策略(如两倍或1.5倍)增长。文章建议在创建vector时预先指定capacity以避免频繁的内存重新分配,从而提高程序效率。此外,不同编译器采用的内存增长策略也有所不同,如g++使用两倍策略,而Visual Studio 2019采用1.5倍策略。

a1b2c

C++ Vector 动态数组的实现

主要介绍了C++ Vector 动态数组的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38700779
评论 6
收藏 已收藏
分享
返回顶部
saigirl
C++ 语言 65,214 成员 250,514 内容