如何std::vector
分配对象?看起来好像它只是std::allocator::allocate
用来创建一块内存,但从不调用std::allocate::construct
. 这是真的?是否std::vector
只分配内存而从不将对象构造为内存分配?
如果没有默认构造函数怎么办?对象上没有默认构造函数时如何调用构造函数?如果有多个参数怎么办?
例如,使用此代码没有默认构造函数,并且 std::allocator 允许它。
#include <vector>
using namespace std;
class A{
protected:
int m;
public:
explicit A(int a) : m(a) { }
};
int main(){
vector<A> test;
return 0;
}