为什么要求的单参数构造函数std::list<T>
是T
默认可构造类型?我的意思是以下代码无法编译。
struct Foo { // does not have default constructor.
Foo (int i) {}
}
int main(void) {
std::list<Foo> l(10);
}
似乎可以像在 std::vector 中所做的那样使用构造和销毁习语,尽管需要更多地记录列表类。
在相关说明中,为什么列表中没有容量功能?您可以争辩说,这样的函数会预先支付内存分配成本,并在以后消除push_back
对象时的开销。至少它会使两个 STL 序列容器的接口稍微一致。