首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >std::vector的交换和shrink_to_fit()的区别

std::vector的交换和shrink_to_fit()的区别
EN

Stack Overflow用户
提问于 2021-02-01 16:38:44
回答 1查看 81关注 0票数 0

众所周知,swap()可以释放向量的内存,而shrink_to_fit()也可以做到这一点。是对的吗?

代码语言:javascript
复制
vector<int> nums; 
nums.push_back(1);
nums.push_back(1);
nums.push_back(2);
nums.push_back(2); 

vector<int>().swap(nums);
vector<int>().shrink_to_fit();
EN

Stack Overflow用户

发布于 2021-02-01 16:49:22

向量向量().swap(

);

这实际上等同于(尽管不能保证如此)

代码语言:javascript
复制
nums.clear();
nums.shrink_to_fit();

我推荐写后者,因为它读起来更清晰。交换技巧是在引入shrink_to_fit之前使用的。

交换()可以释放向量的内存,

交换本身不会释放内存。它是释放内存的临时对象的析构函数。

向量向量().shrink_to_fit(

);

这是不恰当的。

向量().shrink_to_fit();

这只修改了一个临时对象,没有其他副作用,所以这实际上等同于一个空语句,假设它被优化出来了。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65989466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档