首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以更改std::string容量以进行优化?

是否可以更改std::string容量以进行优化?
EN

Stack Overflow用户
提问于 2014-05-29 21:58:53
回答 1查看 133关注 0票数 1

可以改变std::string的容量来优化它吗?

例如:

代码语言:javascript
复制
std::string name0 = "ABCDEABCDEABCDEF";
int cap = name0.capacity();  //cap = 31
int size = name0.size();     //size = 16

好的,这对于内存中的几个字符串来说是完全没有问题的,但是如果有数千个呢?这会浪费大量内存。那么使用char*是不是更好,这样你就可以控制为特定字符串分配了多少内存?

(我知道有些人会问为什么内存中有数千个字符串,但我想继续问我的问题,即字符串容量是否可以优化?)

EN

回答 1

Stack Overflow用户

发布于 2014-05-29 22:09:20

如果您正在询问如何减少capacity(),使其与size()匹配,那么C++11为此添加了shrink_to_fit(),但请注意这是一个非绑定请求,因此允许实现忽略它。

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

或者有创建临时字符串并交换的诀窍:

代码语言:javascript
复制
std::string(name0.begin(), name0.end()).swap(name0);

但是,这两种方法都不能保证为您提供与size()匹配的capacity()。来自GotW #54

某些实现可能会选择将容量略微四舍五入到下一个更大的内部“块大小”,结果是容量实际上比大小略大。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23935177

复制
相关文章

相似问题

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