Ash*_*ain 22
我认为你的意思是resize(0)代替setsize,而不是,而不是clear(),而你正在谈论std::vector.IIRC最近的一个答案讨论了这个(无法找到链接),而且在现代STL实现中,clear()可能与之相同resize(0).
以前清除向量可能已释放所有内存(即,其容量也降至零),当您再次开始添加元素时会导致重新分配,与resize(0)保持容量相比,重新分配的次数更少.但是,我认为在现代STL库中没有区别.如果您正在使用旧的STL实现,或者您只是偏执,resize(0)可能会更快.
小智 5
当向量包含没有默认构造函数的类的对象时,clear 和 resize(0) 之间似乎存在差异。例如,以下代码将编译:
#include <vector>
class A {
private:
int x,y;
public:
A(int x,int y) :x(x), y(y) {}
};
int main() {
std::vector <A> aa;
aa.clear();
}
Run Code Online (Sandbox Code Playgroud)
但是如果你替换aa.clear()by aa.resize(0),你会得到编译错误:
error: no matching function for call to 'A::A()'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11274 次 |
| 最近记录: |