我想处理一定数量的结构,比如
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
来实现这个目标,还是应该编写自己的类似矢量的包装器?
答案 0 :(得分:3)
在向量上调用reserve()
将增加向量的容量(即:它将分配用于存储对象的内存):
const int N = 100000;
std::vector<s> my_data;
my_data.reserve(N);
在将元素插入向量时,将调用构造函数。