有没有办法为std :: vector分配内存而不调用元素的构造函数?

时间:2018-01-23 14:12:14

标签: c++ allocation

我想处理一定数量的结构,比如

struct s{
  int f;
  int g;
  int h;
};

使用std::vector会很方便,但我担心

const int N = 100000;
std::vector<s> my_data(N);

将致电s::s N次。我想避免这种情况,初始化内存如:

s* my_data;
unsigned char* buff = new unsigned_char[N*sizeof(s)];
memset(buf, 0, N*sizeof(s));
my_data = reinterpret_cast<s*>(buff);

有没有办法用std::vector来实现这个目标,还是应该编写自己的类似矢量的包装器?

1 个答案:

答案 0 :(得分:3)

在向量上调用reserve()将增加向量的容量(即:它将分配用于存储对象的内存):

const int N = 100000;
std::vector<s> my_data;
my_data.reserve(N);

在将元素插入向量时,将调用构造函数。