vector的resize()是改变了size的大小,没有改变capacity啊.如何改变capacity呢?

numddd numddd 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
下面这段代码:

#include <iostream>
#include <vector>
void main( void )
{
std::vector<int> v(200);
std::cout<<v.size()<<','<<v.capacity()<<std::endl;
v.push_back(1);
v.push_back(2);
std::cout<<v.size()<<','<<v.capacity()<<std::endl;
v.empty();
std::cout<<v.size()<<','<<v.capacity()<<std::endl;
v.resize(0);
std::cout<<v.size()<<','<<v.capacity()<<std::endl;
}

运行输出:
200,200
202,300
202,300
0,300
Press any key to continue . . .

问题是,为什么resize命令其实并没有改变capacity? 我如果想改变的话怎么办呢?
...全文

相关推荐

Vector用法介绍

这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。

silence880714

【19】C++实战篇—— vector中 resize()和reserve()详解 与 区别 capacity()和size()

本文介绍了C++ vector容器中size()、empty()、resize()、capacity()和reserve()等常用成员函数的功能与区别。重点分析了resize()和reserve()的实现原理和使用场景:resize()会改变容器大小并初始化新元素,而reserve()仅预留内存空间。通过实验数据展示了vector容量自动扩容机制,发现VS环境下扩容并非固定2倍增长。文章还对比了size()和capacity()的区别,size表示当前元素数量,capacity表示可容纳元素总数。通过多个代

R-G-B

经典C与C++面试题精选

经典C与 C++ 面试题总结,面试集锦,技巧

G1107898008

二维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 resize与reserve区别[代码]

本文详细解析了C++中vector容器的resize()和reserve()方法的区别。reserve()主要用于预留空间以避免多次扩容,它只影响容器的容量(capacity)而不改变实际元素数量(size);而resize()则会同时改变容器的大小和容量,并会创建或销毁元素对象。文章通过实例代码展示了两种方法的具体行为差异,包括内存分配机制、元素初始化方式等,并解释了当操作超出当前容量时vector的自动扩容策略。最后总结了两个方法在功能、参数形式和元素访问方面的关键区别,为开发者正确使用这两个方法提供了实用指导。

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