c++ - 有没有办法在不调用元素构造函数的情况下为 std::vector 分配内存?

标签 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 来实现这一点,或者我应该编写自己的类似 vector 的包装器?

最佳答案

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

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

构造函数将在您将元素插入 vector 时调用。

关于c++ - 有没有办法在不调用元素构造函数的情况下为 std::vector 分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48403799/

相关文章:

c++ - 更有效地使用 fork() 和写时复制内存共享

c++ - OpenCV 人脸检测返回太多人脸

java - 匿名访客

c++ - 动态大小数组在哪里创建? (堆栈或堆)

c++ - 不可移动对象数组的初始化 : why does such code fail to compile on GCC?

c++ - 将创建的对象作为参数从该对象内部传递,C++

c++ - C 中的文件流和 C++ 中的 iostream 有什么区别?

C# Parallel.For 和未初始化数组

c - 如何将字符串添加到C中的字符串数组

c# - 值类型变量是否违反栈的LIFO性质