如何初始化不同动态分配地址的向量

时间:2019-04-08 03:16:58

标签: c++ pointers vector

是否可以在初始化期间创建contact.number,以使std::vector<T*> vec;的每个元素在堆上存储一个不同的地址?

简单地做

vec

使vec的所有元素在堆上存储相同的地址。当然,我可以只做

int N = 10;
std::vector<T*> vec(N, new T)

在构造函数调用中有任何方法可以做到吗?

1 个答案:

答案 0 :(得分:1)

将值填充到向量中的构造函数都会创建单个值的重复项,因此在这种情况下它们将无法工作。

您可以比std::for_each做得更好。由于您希望向量中的每个元素都填充有函数的结果,因此std::generate(或std::generate_n)显然更适合:

std::vector<T *> vec(N);
std::generate(vec.begin(), vec.end(), [] { return new int; });

也就是说,原始指针向量很可能是一个错误,所以我建议您探索其他选择。