是否允许vector :: clear()改变C ++ 11中的容量?

时间:2014-03-08 09:36:52

标签: c++ c++11 vector language-lawyer

在C ++ 03中,向量上的clear()erase(begin(),end())定义,与resize(0)完全相同,这意味着容量保持不变。

在C ++ 11中,clear()没有以这种方式定义。相反,它说:

  

销毁a中的所有元素。使所有引用,指针和。无效   迭代器引用a的元素并可能使其无效   过去的迭代器。

在C ++ 11中是否允许实现在调用clear()时释放并更改向量的容量?我们可以期望v.clear()vector<T>{}.swap(v)具有相同的效果吗?

PS:我的另一个问题也与矢量存储有关:What happens to the underlying storage upon vector's copy/move assignment?
任何输入也都受到高度赞赏。

0 个答案:

没有答案