首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许vector::shrink_to_fit重新分配吗?

允许vector::shrink_to_fit重新分配吗?
EN

Stack Overflow用户
提问于 2012-12-17 10:38:54
回答 1查看 605关注 0票数 11

如果不允许重新分配,此成员函数在标准(仅限备注)中没有定义的效果,将有有限的用途。但我在标准中找到的唯一适用的段落是23.2.1/11:

除非另有规定(显式地或以其他函数定义函数),否则调用容器成员函数或将容器作为参数传递给库函数,不应使迭代器失效或更改容器内对象的值。

既然重新分配会使迭代器失效,这是否意味着shrink_to_fit无法正式重新分配?如果是这样的话,该函数只能对那些不重新分配能力的实现(如果有.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-17 11:14:58

我同意,其意图显然是shrink_to_fit()可以重新分配,因此应该允许它使迭代器失效。

只有当实现为分配器提供了一个realloc()-like功能,保证在缩小块时不移动内存,而这不会使迭代器失效时,才有可能满足请求。但我不认为这正是最近增加的要求的意图,正如最近增加的要求所暗示的,T是向量中的MoveInsertable,因为只有当元素被移动到新的位置时,这一要求才有意义,这将使迭代器失效。

我认为您应该通过提交问题来澄清shrink_to_fit()可以使迭代器失效。这个问题将适用于basic_stringdequevector

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

https://stackoverflow.com/questions/13912507

复制
相关文章

相似问题

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