在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?
任何输入也都受到高度赞赏。